Ignore:
Timestamp:
03/24/15 11:21:45 (9 years ago)
Author:
rlacroix
Message:

Fix the Fortran interface generation to avoid generating dead code that caused a timer not to be stopped.

File:
1 edited

Legend:

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

    r549 r581  
    194194       { 
    195195         CMessage msg; 
    196 //         msg<<this->getId(); 
    197          msg<<this->getIdServer(); 
    198          msg<<attr.getName(); 
    199          msg<<attr; 
     196//       msg << this->getId(); 
     197         msg << this->getIdServer(); 
     198         msg << attr.getName(); 
     199         msg << attr; 
    200200         event.push(client->getServerLeader(),1,msg); 
    201201         client->sendEvent(event); 
     
    216216    *buffer>>attrId; 
    217217    CAttribute* attr=attrMap[attrId]; 
    218     info(50)<<"attribut recu "<<attrId<<"  "; 
    219     if (attr->isEmpty()) info(50)<<"--> empty"<<endl; 
    220     else info(50) /*<attr->getValue()*/<<endl; 
     218    info(50) << "attribut recu " << attrId << "  "; 
     219    if (attr->isEmpty()) info(50) << "--> empty" << endl; 
     220    else info(50) /*<attr->getValue()*/ << endl; 
    221221    *buffer>>*attr; 
    222      info(50)<<"attribut recu "<<attrId<<"  "; 
    223     if (attr->isEmpty()) info(50)<<"--> empty"<<endl; 
    224     else info(50) /*attr->getValue()*/<<endl; 
     222     info(50) << "attribut recu " << attrId << "  "; 
     223    if (attr->isEmpty()) info(50) << "--> empty" << endl; 
     224    else info(50) /*attr->getValue()*/ << endl; 
    225225  } 
    226226 
     
    237237         default : 
    238238         return false; 
    239 //           ERROR("void CObjectTemplate<T>::recvEvent(CEventServer& event)", 
    240 //                 <<"Unknown Event"); 
     239//           ERROR("void CObjectTemplate<T>::recvEvent(CEventServer& event)", << "Unknown Event"); 
    241240      } 
    242241   } 
     
    325324     if (found!=string::npos) className.replace(found,1,0,'x'); 
    326325 
    327      oss<<"/* ************************************************************************** *"<<iendl; 
    328      oss<<" *               Interface auto generated - do not modify                   *"<<iendl; 
    329      oss<<" * ************************************************************************** */"<<iendl; 
    330      oss<<iendl; 
    331      oss<<"#include <boost/multi_array.hpp>"<<iendl; 
    332      oss<<"#include <boost/shared_ptr.hpp>"<<iendl; 
    333      oss<<"#include \"xmlioserver.hpp\""<<iendl; 
    334      oss<<"#include \"attribute_template.hpp\""<<iendl; 
    335      oss<<"#include \"object_template.hpp\""<<iendl; 
    336      oss<<"#include \"group_template.hpp\""<<iendl; 
    337      oss<<"#include \"icutil.hpp\""<<iendl; 
    338      oss<<"#include \"icdate.hpp\""<<iendl; 
    339      oss<<"#include \"timer.hpp\""<<iendl; 
    340      oss<<"#include \"node_type.hpp\""<<iendl; 
    341      oss<<iendl; 
    342      oss<<"extern \"C\""<<iendl; 
    343      oss<<"{"<<iendl++; 
    344      oss<<"typedef xios::"<<getStrType<T>()<<"*  "<<className<<"_Ptr;"<<iendl; 
    345      oss<<iendl; 
     326     oss << "/* ************************************************************************** *" << iendl; 
     327     oss << " *               Interface auto generated - do not modify                     *" << iendl; 
     328     oss << " * ************************************************************************** */" << iendl; 
     329     oss << iendl; 
     330     oss << "#include <boost/multi_array.hpp>" << iendl; 
     331     oss << "#include <boost/shared_ptr.hpp>" << iendl; 
     332     oss << "#include \"xmlioserver.hpp\"" << iendl; 
     333     oss << "#include \"attribute_template.hpp\"" << iendl; 
     334     oss << "#include \"object_template.hpp\"" << iendl; 
     335     oss << "#include \"group_template.hpp\"" << iendl; 
     336     oss << "#include \"icutil.hpp\"" << iendl; 
     337     oss << "#include \"icdate.hpp\"" << iendl; 
     338     oss << "#include \"timer.hpp\"" << iendl; 
     339     oss << "#include \"node_type.hpp\"" << iendl; 
     340     oss << iendl; 
     341     oss << "extern \"C\"" << iendl; 
     342     oss << "{" << iendl++; 
     343     oss << "typedef xios::" << getStrType<T>() << "* " << className << "_Ptr;"; 
    346344     SuperClassMap::generateCInterface(oss,className); 
    347      oss<<iendl--; 
    348      oss<<"}"<<iendl; 
     345     oss << "}" << iendl--; 
    349346   } 
    350347 
     
    356353     if (found!=string::npos) className.replace(found,1,0,'x'); 
    357354 
    358      oss<<"! * ************************************************************************** *"<<iendl; 
    359      oss<<"! *               Interface auto generated - do not modify                     *"<<iendl; 
    360      oss<<"! * ************************************************************************** *"<<iendl; 
    361      oss<<"#include \"../fortran/xios_fortran_prefix.hpp\""<<iendl; 
    362      oss<<iendl; 
    363      oss<<"MODULE "<<className<<"_interface_attr"<<iendl++; 
    364      oss<<"USE, INTRINSIC :: ISO_C_BINDING"<<iendl; 
    365      oss<<iendl; 
    366      oss<<"INTERFACE ! Do not call directly / interface FORTRAN 2003 <-> C99"<<iendl++; 
    367      oss<<iendl; 
    368      oss<<iendl; 
     355     oss << "! * ************************************************************************** *" << iendl; 
     356     oss << "! *               Interface auto generated - do not modify                     *" << iendl; 
     357     oss << "! * ************************************************************************** *" << iendl; 
     358     oss << "#include \"../fortran/xios_fortran_prefix.hpp\"" << iendl; 
     359     oss << iendl; 
     360     oss << "MODULE " << className << "_interface_attr" << iendl++; 
     361     oss << "USE, INTRINSIC :: ISO_C_BINDING" << std::endl; 
     362     oss << iendl; 
     363     oss << "INTERFACE" << iendl++; 
     364     oss << "! Do not call directly / interface FORTRAN 2003 <-> C99"; 
    369365     SuperClassMap::generateFortran2003Interface(oss,className); 
    370      oss<<"END INTERFACE"<<iendl--; 
    371      oss<<iendl--; 
    372      oss<<"END MODULE "<<className<<"_interface_attr"<<iendl; 
     366     oss << iendl--; 
     367     oss << "END INTERFACE" << iendl--; 
     368     oss << iendl; 
     369     oss << "END MODULE " << className << "_interface_attr" << iendl; 
    373370   } 
    374371 
     
    383380     if (found!=string::npos) superClassName.erase(found,6); 
    384381 
    385      oss<<"! * ************************************************************************** *"<<iendl; 
    386      oss<<"! *               Interface auto generated - do not modify                     *"<<iendl; 
    387      oss<<"! * ************************************************************************** *"<<iendl; 
    388      oss<<"#include \"xios_fortran_prefix.hpp\""<<iendl; 
    389      oss<<iendl; 
    390      oss<<"MODULE i"<<className<<"_attr"<<iendl++; 
    391      oss<<"USE, INTRINSIC :: ISO_C_BINDING"<<iendl; 
    392      oss<<"USE i"<<superClassName<<iendl; 
    393      oss<<"USE "<<className<<"_interface_attr"<<iendl; 
    394 //     oss<<"TYPE txios("<<className<<")"<<iendl; 
    395 //     oss<<"  INTEGER(kind = C_INTPTR_T) :: daddr"<<iendl; 
    396 //     oss<<"END TYPE txios("<<className<<")"<<iendl; 
    397      oss<<iendl--; 
    398      oss<<"CONTAINS"<<iendl++; 
    399      oss<<iendl; 
     382     oss << "! * ************************************************************************** *" << iendl; 
     383     oss << "! *               Interface auto generated - do not modify                     *" << iendl; 
     384     oss << "! * ************************************************************************** *" << iendl; 
     385     oss << "#include \"xios_fortran_prefix.hpp\"" << iendl; 
     386     oss << iendl; 
     387     oss << "MODULE i" << className << "_attr" << iendl++; 
     388     oss << "USE, INTRINSIC :: ISO_C_BINDING" << iendl; 
     389     oss << "USE i" << superClassName << iendl; 
     390     oss << "USE " << className << "_interface_attr" << iendl--; 
     391//   oss << "TYPE txios(" << className << ")" << iendl; 
     392//   oss << "  INTEGER(kind = C_INTPTR_T) :: daddr" << iendl; 
     393//   oss << "END TYPE txios(" << className << ")" << iendl; 
     394     oss << iendl; 
     395     oss << "CONTAINS" << iendl; 
     396     oss << iendl++; 
    400397     SuperClassMap::generateFortranInterface_id(oss,className); 
    401      oss<<iendl; 
     398     oss << iendl; 
    402399     SuperClassMap::generateFortranInterface_hdl(oss,className); 
    403      oss<<iendl; 
     400     oss << iendl; 
    404401     SuperClassMap::generateFortranInterface_hdl_(oss,className); 
    405      oss<<iendl; 
     402     oss << iendl; 
    406403     SuperClassMap::generateFortranInterfaceGet_id(oss,className); 
    407      oss<<iendl; 
     404     oss << iendl; 
    408405     SuperClassMap::generateFortranInterfaceGet_hdl(oss,className); 
    409      oss<<iendl; 
     406     oss << iendl; 
    410407     SuperClassMap::generateFortranInterfaceGet_hdl_(oss,className); 
    411      oss<<iendl; 
     408     oss << iendl; 
    412409     SuperClassMap::generateFortranInterfaceIsDefined_id(oss,className); 
    413      oss<<iendl; 
     410     oss << iendl; 
    414411     SuperClassMap::generateFortranInterfaceIsDefined_hdl(oss,className); 
    415      oss<<iendl; 
     412     oss << iendl; 
    416413     SuperClassMap::generateFortranInterfaceIsDefined_hdl_(oss,className); 
    417      oss<<iendl--; 
    418      oss<<"END MODULE i"<<className<<"_attr"<<iendl; 
    419    } 
    420  
    421  
     414     oss << iendl--; 
     415     oss << "END MODULE i" << className << "_attr" << iendl; 
     416   } 
    422417} // namespace xios 
    423418 
Note: See TracChangeset for help on using the changeset viewer.