Ignore:
Timestamp:
08/25/15 10:50:21 (9 years ago)
Author:
rlacroix
Message:

Fix Fortran interface generation to avoid generating long lines.

Long lines can cause compilation issues with some compilers.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • XIOS/trunk/src/generate_interface_impl.hpp

    r672 r674  
    378378    string typeName=getStrType<T>(); \ 
    379379\ 
    380     oss << "void cxios_set_" << className << "_" << name << "(" << className << "_Ptr " << className << "_hdl, " << typeName << "* " << name << ", int extent1)" << iendl; \ 
     380    oss << "void cxios_set_" << className << "_" << name << "(" << className << "_Ptr " << className << "_hdl, " << typeName << "* " << name << ", int* extent)" << iendl; \ 
    381381    oss << "{" << iendl; \ 
    382382    oss << "  CTimer::get(\"XIOS\").resume();" << iendl; \ 
    383     oss << "  CArray<" << typeName << ",1> tmp(" << name << ", shape(extent1), neverDeleteData);" << iendl; \ 
     383    oss << "  CArray<" << typeName << ",1> tmp(" << name << ", shape(extent[0]), neverDeleteData);" << iendl; \ 
    384384    oss << "  " << className << "_hdl->" << name << ".reference(tmp.copy());" << iendl; \ 
    385385    /*oss << "  " << className << "_hdl->sendAttributToServer(" << className << "_hdl->" << name << ");" << iendl;*/ \ 
     
    387387    oss << "}" << std::endl; \ 
    388388    oss << iendl; \ 
    389     oss << "void cxios_get_" << className << "_" << name << "(" << className << "_Ptr " << className << "_hdl, " << typeName << "* " << name << ", int extent1)" << iendl; \ 
     389    oss << "void cxios_get_" << className << "_" << name << "(" << className << "_Ptr " << className << "_hdl, " << typeName << "* " << name << ", int* extent)" << iendl; \ 
    390390    oss << "{" << iendl; \ 
    391391    oss << "  CTimer::get(\"XIOS\").resume();" << iendl; \ 
    392     oss << "  CArray<" << typeName << ",1> tmp(" << name << ", shape(extent1), neverDeleteData);" << iendl; \ 
     392    oss << "  CArray<" << typeName << ",1> tmp(" << name << ", shape(extent[0]), neverDeleteData);" << iendl; \ 
    393393    oss << "  tmp=" << className << "_hdl->" << name << ".getInheritedValue();" << iendl; \ 
    394394    oss << "   CTimer::get(\"XIOS\").suspend();" << iendl; \ 
     
    401401    string typeName=getStrType<T>(); \ 
    402402\ 
    403     oss << "void cxios_set_" << className << "_" << name << "(" << className << "_Ptr " << className << "_hdl, " << typeName << "* " << name << ", int extent1, int extent2)" << iendl; \ 
     403    oss << "void cxios_set_" << className << "_" << name << "(" << className << "_Ptr " << className << "_hdl, " << typeName << "* " << name << ", int* extent)" << iendl; \ 
    404404    oss << "{" << iendl; \ 
    405405    oss << "  CTimer::get(\"XIOS\").resume();" << iendl; \ 
    406     oss << "  CArray<" << typeName << ",2> tmp(" << name << ", shape(extent1, extent2), neverDeleteData);" << iendl; \ 
     406    oss << "  CArray<" << typeName << ",2> tmp(" << name << ", shape(extent[0], extent[1]), neverDeleteData);" << iendl; \ 
    407407    oss << "  " << className << "_hdl->" << name << ".reference(tmp.copy());" << iendl; \ 
    408408    /*oss << "  " << className << "_hdl->sendAttributToServer(" << className << "_hdl->" << name << ");" << iendl;*/ \ 
     
    410410    oss << "}" << std::endl; \ 
    411411    oss << iendl; \ 
    412     oss << "void cxios_get_" << className << "_" << name << "(" << className << "_Ptr " << className << "_hdl, " << typeName << "* " << name << ", int extent1, int extent2)" << iendl; \ 
     412    oss << "void cxios_get_" << className << "_" << name << "(" << className << "_Ptr " << className << "_hdl, " << typeName << "* " << name << ", int* extent)" << iendl; \ 
    413413    oss << "{" << iendl; \ 
    414414    oss << "  CTimer::get(\"XIOS\").resume();" << iendl; \ 
    415     oss << "  CArray<" << typeName << ",2> tmp(" << name << ", shape(extent1, extent2), neverDeleteData);" << iendl; \ 
     415    oss << "  CArray<" << typeName << ",2> tmp(" << name << ", shape(extent[0], extent[1]), neverDeleteData);" << iendl; \ 
    416416    oss << "  tmp=" << className << "_hdl->" << name << ".getInheritedValue();" << iendl; \ 
    417417    oss << "   CTimer::get(\"XIOS\").suspend();" << iendl; \ 
     
    424424    string typeName=getStrType<T>(); \ 
    425425\ 
    426     oss << "void cxios_set_" << className << "_" << name << "(" << className << "_Ptr " << className << "_hdl, " << typeName << "* " << name << ", int extent1, int extent2, int extent3)" << iendl; \ 
     426    oss << "void cxios_set_" << className << "_" << name << "(" << className << "_Ptr " << className << "_hdl, " << typeName << "* " << name << ", int* extent)" << iendl; \ 
    427427    oss << "{" << iendl; \ 
    428428    oss << "  CTimer::get(\"XIOS\").resume();" << iendl; \ 
    429     oss << "  CArray<" << typeName << ",3> tmp(" << name << ", shape(extent1, extent2, extent3), neverDeleteData);" << iendl; \ 
     429    oss << "  CArray<" << typeName << ",3> tmp(" << name << ", shape(extent[0], extent[1], extent[2]), neverDeleteData);" << iendl; \ 
    430430    oss << "  " << className << "_hdl->" << name << ".reference(tmp.copy());" << iendl; \ 
    431431    /*oss << "  " << className << "_hdl->sendAttributToServer(" << className << "_hdl->" << name << ");" << iendl;*/ \ 
     
    433433    oss << "}" << std::endl; \ 
    434434    oss << iendl; \ 
    435     oss << "void cxios_get_" << className << "_" << name << "(" << className << "_Ptr " << className << "_hdl, " << typeName << "* " << name << ", int extent1, int extent2, int extent3)" << iendl; \ 
     435    oss << "void cxios_get_" << className << "_" << name << "(" << className << "_Ptr " << className << "_hdl, " << typeName << "* " << name << ", int* extent)" << iendl; \ 
    436436    oss << "{" << iendl; \ 
    437437    oss << "  CTimer::get(\"XIOS\").resume();" << iendl; \ 
    438     oss << "  CArray<" << typeName << ",3> tmp(" << name << ", shape(extent1, extent2, extent3), neverDeleteData);" << iendl; \ 
     438    oss << "  CArray<" << typeName << ",3> tmp(" << name << ", shape(extent[0], extent[1], extent[2]), neverDeleteData);" << iendl; \ 
    439439    oss << "  tmp=" << className << "_hdl->" << name << ".getInheritedValue();" << iendl; \ 
    440440    oss << "   CTimer::get(\"XIOS\").suspend();" << iendl; \ 
     
    459459    string fortranKindC=getStrFortranKindC<T>(); \ 
    460460      \ 
    461     oss << "SUBROUTINE cxios_set_" << className << "_" << name << "(" << className << "_hdl, " << name << ", extent1) BIND(C)" << iendl; \ 
     461    oss << "SUBROUTINE cxios_set_" << className << "_" << name << "(" << className << "_hdl, " << name << ", extent) BIND(C)" << iendl; \ 
    462462    oss << "  USE ISO_C_BINDING" << iendl; \ 
    463463    oss << "  INTEGER (kind = C_INTPTR_T), VALUE       :: " << className << "_hdl" << iendl; \ 
    464464    oss << "  " << fortranType << " " << fortranKindC << "     , DIMENSION(*) :: " << name << iendl; \ 
    465     oss << "  INTEGER (kind = C_INT), VALUE  :: extent1" << iendl; \ 
     465    oss << "  INTEGER (kind = C_INT), DIMENSION(*)     :: extent" << iendl; \ 
    466466    oss << "END SUBROUTINE cxios_set_" << className << "_" << name << std::endl; \ 
    467467    oss << iendl; \ 
    468     oss << "SUBROUTINE cxios_get_" << className << "_" << name << "(" << className << "_hdl, " << name << ", extent1) BIND(C)" << iendl; \ 
     468    oss << "SUBROUTINE cxios_get_" << className << "_" << name << "(" << className << "_hdl, " << name << ", extent) BIND(C)" << iendl; \ 
    469469    oss << "  USE ISO_C_BINDING" << iendl; \ 
    470470    oss << "  INTEGER (kind = C_INTPTR_T), VALUE       :: " << className << "_hdl" << iendl; \ 
    471471    oss << "  " << fortranType << " " << fortranKindC << "     , DIMENSION(*) :: " << name << iendl; \ 
    472     oss << "  INTEGER (kind = C_INT), VALUE  :: extent1" << iendl; \ 
     472    oss << "  INTEGER (kind = C_INT), DIMENSION(*)     :: extent" << iendl; \ 
    473473    oss << "END SUBROUTINE cxios_get_" << className << "_" << name << std::endl; \ 
    474474  } \ 
     
    480480    string fortranKindC=getStrFortranKindC<T>(); \ 
    481481      \ 
    482     oss << "SUBROUTINE cxios_set_" << className << "_" << name << "(" << className << "_hdl, " << name << ", extent1, extent2) BIND(C)" << iendl; \ 
     482    oss << "SUBROUTINE cxios_set_" << className << "_" << name << "(" << className << "_hdl, " << name << ", extent) BIND(C)" << iendl; \ 
    483483    oss << "  USE ISO_C_BINDING" << iendl; \ 
    484484    oss << "  INTEGER (kind = C_INTPTR_T), VALUE       :: " << className << "_hdl" << iendl; \ 
    485485    oss << "  " << fortranType << " " << fortranKindC << "     , DIMENSION(*) :: " << name << iendl; \ 
    486     oss << "  INTEGER (kind = C_INT), VALUE  :: extent1" << iendl; \ 
    487     oss << "  INTEGER (kind = C_INT), VALUE  :: extent2" << iendl; \ 
     486    oss << "  INTEGER (kind = C_INT), DIMENSION(*)     :: extent" << iendl; \ 
    488487    oss << "END SUBROUTINE cxios_set_" << className << "_" << name << std::endl; \ 
    489488    oss << iendl; \ 
    490     oss << "SUBROUTINE cxios_get_" << className << "_" << name << "(" << className << "_hdl, " << name << ", extent1, extent2) BIND(C)" << iendl; \ 
     489    oss << "SUBROUTINE cxios_get_" << className << "_" << name << "(" << className << "_hdl, " << name << ", extent) BIND(C)" << iendl; \ 
    491490    oss << "  USE ISO_C_BINDING" << iendl; \ 
    492491    oss << "  INTEGER (kind = C_INTPTR_T), VALUE       :: " << className << "_hdl" << iendl; \ 
    493492    oss << "  " << fortranType << " " << fortranKindC << "     , DIMENSION(*) :: " << name << iendl; \ 
    494     oss << "  INTEGER (kind = C_INT), VALUE  :: extent1" << iendl; \ 
    495     oss << "  INTEGER (kind = C_INT), VALUE  :: extent2" << iendl; \ 
     493    oss << "  INTEGER (kind = C_INT), DIMENSION(*)     :: extent" << iendl; \ 
    496494    oss << "END SUBROUTINE cxios_get_" << className << "_" << name << std::endl; \ 
    497495  } \ 
     
    503501    string fortranKindC=getStrFortranKindC<T>(); \ 
    504502      \ 
    505     oss << "SUBROUTINE cxios_set_" << className << "_" << name << "(" << className << "_hdl, " << name << ", extent1, extent2, extent3) BIND(C)" << iendl; \ 
     503    oss << "SUBROUTINE cxios_set_" << className << "_" << name << "(" << className << "_hdl, " << name << ", extent) BIND(C)" << iendl; \ 
    506504    oss << "  USE ISO_C_BINDING" << iendl; \ 
    507505    oss << "  INTEGER (kind = C_INTPTR_T), VALUE       :: " << className << "_hdl" << iendl; \ 
    508506    oss << "  " << fortranType << " " << fortranKindC << "     , DIMENSION(*) :: " << name << iendl; \ 
    509     oss << "  INTEGER (kind = C_INT), VALUE  :: extent1" << iendl; \ 
    510     oss << "  INTEGER (kind = C_INT), VALUE  :: extent2" << iendl; \ 
    511     oss << "  INTEGER (kind = C_INT), VALUE  :: extent3" << iendl; \ 
     507    oss << "  INTEGER (kind = C_INT), DIMENSION(*)     :: extent" << iendl; \ 
    512508    oss << "END SUBROUTINE cxios_set_" << className << "_" << name << std::endl; \ 
    513509    oss << iendl; \ 
    514     oss << "SUBROUTINE cxios_get_" << className << "_" << name << "(" << className << "_hdl, " << name << ", extent1, extent2, extent3) BIND(C)" << iendl; \ 
     510    oss << "SUBROUTINE cxios_get_" << className << "_" << name << "(" << className << "_hdl, " << name << ", extent) BIND(C)" << iendl; \ 
    515511    oss << "  USE ISO_C_BINDING" << iendl; \ 
    516512    oss << "  INTEGER (kind = C_INTPTR_T), VALUE       :: " << className << "_hdl" << iendl; \ 
    517513    oss << "  " << fortranType << " " << fortranKindC << "     , DIMENSION(*) :: " << name << iendl; \ 
    518     oss << "  INTEGER (kind = C_INT), VALUE  :: extent1" << iendl; \ 
    519     oss << "  INTEGER (kind = C_INT), VALUE  :: extent2" << iendl; \ 
    520     oss << "  INTEGER (kind = C_INT), VALUE  :: extent3" << iendl; \ 
     514    oss << "  INTEGER (kind = C_INT), DIMENSION(*)     :: extent" << iendl; \ 
    521515    oss << "END SUBROUTINE cxios_get_" << className << "_" << name << std::endl; \ 
    522516  } 
     
    585579    if (!matchingTypeCFortran<T>())  \ 
    586580    { \ 
    587       oss << "  ALLOCATE(" << name_tmp << "(size(" << name << "_,1)))" << iendl; \ 
     581      oss << "  ALLOCATE(" << name_tmp << "(SIZE(" << name << "_,1)))" << iendl; \ 
    588582      oss << "  " << name_tmp << " = " << name << "_" << iendl; \ 
    589       oss << "  CALL cxios_set_" << className << "_" << name << "(" << className << "_hdl%daddr, " << name_tmp << ", size(" << name << "_,1))" << iendl; \ 
     583      oss << "  CALL cxios_set_" << className << "_" << name << "(" << className << "_hdl%daddr, " << name_tmp << ", SHAPE(" << name << "_))" << iendl; \ 
    590584    } \ 
    591     else oss << "  CALL cxios_set_" << className << "_" << name << "(" << className << "_hdl%daddr, " << name << "_, size(" << name << "_,1))" << iendl; \ 
     585    else oss << "  CALL cxios_set_" << className << "_" << name << "(" << className << "_hdl%daddr, " << name << "_, SHAPE(" << name << "_))" << iendl; \ 
    592586    oss << "ENDIF"; \ 
    593587  } \ 
     
    601595    if (!matchingTypeCFortran<T>())  \ 
    602596    { \ 
    603       oss << "  ALLOCATE(" << name_tmp << "(size(" << name << "_,1), size(" << name << "_,2)))" << iendl; \ 
     597      oss << "  ALLOCATE(" << name_tmp << "(SIZE(" << name << "_,1), SIZE(" << name << "_,2)))" << iendl; \ 
    604598      oss << "  " << name_tmp << " = " << name << "_" << iendl; \ 
    605       oss << "  CALL cxios_set_" << className << "_" << name << "(" << className << "_hdl%daddr, " << name_tmp << ", size(" << name << "_,1), size(" << name << "_,2))" << iendl; \ 
     599      oss << "  CALL cxios_set_" << className << "_" << name << "(" << className << "_hdl%daddr, " << name_tmp << ", SHAPE(" << name << "_))" << iendl; \ 
    606600    } \ 
    607     else oss << "  CALL cxios_set_" << className << "_" << name << "(" << className << "_hdl%daddr, " << name << "_, size(" << name << "_,1), size(" << name << "_,2))" << iendl; \ 
     601    else oss << "  CALL cxios_set_" << className << "_" << name << "(" << className << "_hdl%daddr, " << name << "_, SHAPE(" << name << "_))" << iendl; \ 
    608602    oss << "ENDIF"; \ 
    609603  } \ 
     
    617611    if (!matchingTypeCFortran<T>())  \ 
    618612    { \ 
    619       oss << "  ALLOCATE(" << name_tmp << "(size(" << name << "_,1), size(" << name << "_,2), size(" << name << "_,3)))" << iendl; \ 
     613      oss << "  ALLOCATE(" << name_tmp << "(SIZE(" << name << "_,1), SIZE(" << name << "_,2), SIZE(" << name << "_,3)))" << iendl; \ 
    620614      oss << "  " << name_tmp << " = " << name << "_" << iendl; \ 
    621       oss << "  CALL cxios_set_" << className << "_" << name << "(" << className << "_hdl%daddr, " << name_tmp << ", size(" << name << "_,1), size(" << name << "_,2), size(" << name << "_,3))" << iendl; \ 
     615      oss << "  CALL cxios_set_" << className << "_" << name << "(" << className << "_hdl%daddr, " << name_tmp << ", SHAPE(" << name << "_))" << iendl; \ 
    622616    } \ 
    623     else oss << "  CALL cxios_set_" << className << "_" << name << "(" << className << "_hdl%daddr, " << name << "_, size(" << name << "_,1), size(" << name << "_,2), size(" << name << "_,3))" << iendl; \ 
     617    else oss << "  CALL cxios_set_" << className << "_" << name << "(" << className << "_hdl%daddr, " << name << "_, SHAPE(" << name << "_))" << iendl; \ 
    624618    oss << "ENDIF"; \ 
    625619  } 
     
    640634    if (!matchingTypeCFortran<T>())  \ 
    641635    { \ 
    642       oss << "  ALLOCATE(" << name_tmp << "(size(" << name << "_,1)))" << iendl; \ 
    643       oss << "  CALL cxios_get_" << className << "_" << name << "(" << className << "_hdl%daddr, " << name_tmp << ", size(" << name << "_,1))" << iendl; \ 
     636      oss << "  ALLOCATE(" << name_tmp << "(SIZE(" << name << "_,1)))" << iendl; \ 
     637      oss << "  CALL cxios_get_" << className << "_" << name << "(" << className << "_hdl%daddr, " << name_tmp << ", SHAPE(" << name << "_))" << iendl; \ 
    644638      oss << "  " << name << "_ = " << name_tmp << iendl; \ 
    645639    } \ 
    646     else oss << "  CALL cxios_get_" << className << "_" << name << "(" << className << "_hdl%daddr, " << name << "_, size(" << name << "_,1))" << iendl; \ 
     640    else oss << "  CALL cxios_get_" << className << "_" << name << "(" << className << "_hdl%daddr, " << name << "_, SHAPE(" << name << "_))" << iendl; \ 
    647641    oss << "ENDIF"; \ 
    648642  } \ 
     
    656650    if (!matchingTypeCFortran<T>())  \ 
    657651    { \ 
    658       oss << "  ALLOCATE(" << name_tmp << "(size(" << name << "_,1), size(" << name << "_,2)))" << iendl; \ 
    659       oss << "  CALL cxios_get_" << className << "_" << name << "(" << className << "_hdl%daddr, " << name_tmp << ", size(" << name << "_,1), size(" << name << "_,2))" << iendl; \ 
     652      oss << "  ALLOCATE(" << name_tmp << "(SIZE(" << name << "_,1), SIZE(" << name << "_,2)))" << iendl; \ 
     653      oss << "  CALL cxios_get_" << className << "_" << name << "(" << className << "_hdl%daddr, " << name_tmp << ", SHAPE(" << name << "_))" << iendl; \ 
    660654      oss << "  " << name << "_ = " << name_tmp << iendl; \ 
    661655    } \ 
    662     else oss << "  CALL cxios_get_" << className << "_" << name << "(" << className << "_hdl%daddr, " << name << "_, size(" << name << "_,1), size(" << name << "_,2))" << iendl; \ 
     656    else oss << "  CALL cxios_get_" << className << "_" << name << "(" << className << "_hdl%daddr, " << name << "_, SHAPE(" << name << "_))" << iendl; \ 
    663657    oss << "ENDIF"; \ 
    664658  } \ 
     
    672666    if (!matchingTypeCFortran<T>())  \ 
    673667    { \ 
    674       oss << "  ALLOCATE(" << name_tmp << "(size(" << name << "_,1), size(" << name << "_,2), size(" << name << "_,3)))" << iendl; \ 
    675       oss << "  CALL cxios_get_" << className << "_" << name << "(" << className << "_hdl%daddr, " << name_tmp << ", size(" << name << "_,1), size(" << name << "_,2), size(" << name << "_,3))" << iendl; \ 
     668      oss << "  ALLOCATE(" << name_tmp << "(SIZE(" << name << "_,1), SIZE(" << name << "_,2), SIZE(" << name << "_,3)))" << iendl; \ 
     669      oss << "  CALL cxios_get_" << className << "_" << name << "(" << className << "_hdl%daddr, " << name_tmp << ", SHAPE(" << name << "_))" << iendl; \ 
    676670      oss << "  " << name << "_ = " << name_tmp << iendl; \ 
    677671      } \ 
    678     else oss << "  CALL cxios_get_" << className << "_" << name << "(" << className << "_hdl%daddr, " << name << "_, size(" << name << "_,1), size(" << name << "_,2), size(" << name << "_,3))" << iendl; \ 
     672    else oss << "  CALL cxios_get_" << className << "_" << name << "(" << className << "_hdl%daddr, " << name << "_, SHAPE(" << name << "_))" << iendl; \ 
    679673    oss << "ENDIF"; \ 
    680674  } 
Note: See TracChangeset for help on using the changeset viewer.