Changeset 313 for XIOS/trunk/src/object_template_impl.hpp
- Timestamp:
- 02/18/12 22:43:24 (12 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
XIOS/trunk/src/object_template_impl.hpp
r300 r313 112 112 return (T::GetType()); 113 113 } 114 114 115 template <class T> 116 string CObjectTemplate<T>::getName(void) const 117 { 118 return (T::GetName()); 119 } 120 115 121 //--------------------------------------------------------------- 116 122 … … 238 244 } 239 245 240 246 template <typename T> 247 void CObjectTemplate<T>::generateCInterface(ostream& oss) 248 { 249 string className=getName() ; 250 int found=className.find_first_of("_") ; 251 if (found!=string::npos) className.replace(found,1,0,'x') ; 252 253 oss<<"/* ************************************************************************** *"<<iendl ; 254 oss<<" * Interface auto generated - do not modify *"<<iendl ; 255 oss<<" * ************************************************************************** */"<<iendl; 256 oss<<iendl ; 257 oss<<"#include <boost/multi_array.hpp>"<<iendl ; 258 oss<<"#include <boost/shared_ptr.hpp>"<<iendl ; 259 oss<<"#include \"xmlioserver.hpp\""<<iendl; 260 oss<<"#include \"attribute_template_impl.hpp\""<<iendl ; 261 oss<<"#include \"object_template_impl.hpp\""<<iendl; 262 oss<<"#include \"group_template_impl.hpp\""<<iendl ; 263 oss<<"#include \"icutil.hpp\""<<iendl ; 264 oss<<iendl ; 265 oss<<"extern \"C\""<<iendl ; 266 oss<<"{"<<iendl++ ; 267 oss<<"typedef xmlioserver::tree::"<<getStrType<T>()<<"* "<<className<<"_Ptr;"<<iendl; 268 oss<<iendl ; 269 SuperClassMap::generateCInterface(oss,className) ; 270 oss<<iendl-- ; 271 oss<<"}"<<iendl ; 272 } 273 274 template <typename T> 275 void CObjectTemplate<T>::generateFortran2003Interface(ostream& oss) 276 { 277 string className=getName() ; 278 int found=className.find_first_of("_") ; 279 if (found!=string::npos) className.replace(found,1,0,'x') ; 280 281 oss<<"! * ************************************************************************** *"<<iendl ; 282 oss<<"! * Interface auto generated - do not modify *"<<iendl ; 283 oss<<"! * ************************************************************************** *"<<iendl; 284 oss<<iendl ; 285 oss<<"MODULE "<<className<<"_interface_attr"<<iendl++ ; 286 oss<<"USE, INTRINSIC :: ISO_C_BINDING"<<iendl ; 287 oss<<iendl ; 288 oss<<"INTERFACE ! Do not call directly / interface FORTRAN 2003 <-> C99"<<iendl++ ; 289 oss<<iendl ; 290 oss<<iendl ; 291 SuperClassMap::generateFortran2003Interface(oss,className) ; 292 oss<<"END INTERFACE"<<iendl-- ; 293 oss<<iendl-- ; 294 oss<<"END MODULE "<<className<<"_interface_attr"<<iendl ; 295 } 241 296 297 template <typename T> 298 void CObjectTemplate<T>::generateFortranInterface(ostream& oss) 299 { 300 string className=getName() ; 301 int found=className.find_first_of('_') ; 302 if (found!=string::npos) className.erase(found,1) ; 303 string superClassName=getName(); 304 found=superClassName.find("_group") ; 305 if (found!=string::npos) superClassName.erase(found,6) ; 306 307 oss<<"! * ************************************************************************** *"<<iendl ; 308 oss<<"! * Interface auto generated - do not modify *"<<iendl ; 309 oss<<"! * ************************************************************************** *"<<iendl; 310 oss<<"#include \"xios_fortran_prefix.hpp\""<<iendl ; 311 oss<<iendl ; 312 oss<<"MODULE i"<<className<<"_attr"<<iendl++ ; 313 oss<<"USE, INTRINSIC :: ISO_C_BINDING"<<iendl ; 314 oss<<"USE i"<<superClassName<<iendl ; 315 oss<<"USE "<<className<<"_interface_attr"<<iendl ; 316 // oss<<"TYPE txios("<<className<<")"<<iendl ; 317 // oss<<" INTEGER(kind = C_INTPTR_T) :: daddr"<<iendl ; 318 // oss<<"END TYPE txios("<<className<<")"<<iendl ; 319 oss<<iendl-- ; 320 oss<<"CONTAINS"<<iendl++ ; 321 oss<<iendl ; 322 SuperClassMap::generateFortranInterface_id(oss,className) ; 323 oss<<iendl ; 324 SuperClassMap::generateFortranInterface_hdl(oss,className) ; 325 oss<<iendl ; 326 SuperClassMap::generateFortranInterface_hdl_(oss,className) ; 327 oss<<iendl ; 328 SuperClassMap::generateFortranInterfaceGet_id(oss,className) ; 329 oss<<iendl ; 330 SuperClassMap::generateFortranInterfaceGet_hdl(oss,className) ; 331 oss<<iendl ; 332 SuperClassMap::generateFortranInterfaceGet_hdl_(oss,className) ; 333 oss<<iendl-- ; 334 oss<<"END MODULE i"<<className<<"_attr"<<iendl ; 335 } 336 337 242 338 } // namespace xmlioserver 243 339
Note: See TracChangeset
for help on using the changeset viewer.