Ignore:
Timestamp:
04/08/16 15:00:45 (8 years ago)
Author:
mhnguyen
Message:

Exposing transformation to Fortran interface

+) Export zoom and axis transformation to Fortran interface

Test
+) On Curie
+) All work

File:
1 edited

Legend:

Unmodified
Added
Removed
  • XIOS/trunk/src/node/transformation.hpp

    r827 r836  
    2525 
    2626      std::vector<StdString> checkAuxInputs() { return checkAuxInputs_(); } 
     27      static CTransformation<T>* createTransformation(ETranformationType transType, const StdString& id, xml::CXMLNode* node=0); 
    2728 
    2829      /// Destructeur /// 
     
    3031 
    3132    protected: 
     33      typedef CTransformation<T>* (*CreateTransformationCallBack)(const StdString&, xml::CXMLNode*); 
     34      typedef std::map<ETranformationType, CreateTransformationCallBack> CallBackMap; 
     35      static CallBackMap* transformationCreationCallBacks_; 
     36 
     37      static bool registerTransformation(ETranformationType transType, CreateTransformationCallBack createFn); 
     38      static bool unregisterTransformation(ETranformationType transType); 
     39 
     40    protected: 
    3241      virtual std::vector<StdString> checkAuxInputs_() { return std::vector<StdString>(); } 
    3342  }; // class CTransformation 
     43 
     44  template<typename T> 
     45  CTransformation<T>::CallBackMap* CTransformation<T>::transformationCreationCallBacks_ = 0; //CTransformation<T>::CallBackMap(); 
     46 
     47  template<typename T> 
     48  CTransformation<T>* CTransformation<T>::createTransformation(ETranformationType transType, const StdString& id, xml::CXMLNode* node) 
     49  { 
     50    int transTypeInt = transType; 
     51    typename CallBackMap::const_iterator it = (*transformationCreationCallBacks_).find(transType); 
     52    if ((*transformationCreationCallBacks_).end() == it) 
     53    { 
     54       ERROR("CTransformation<T>::createTransformation(ETranformationType transType)", 
     55             << "Transformation type " << transType 
     56             << "doesn't exist. Please define."); 
     57    } 
     58    return (it->second)(id,node); 
     59  } 
     60 
     61  template<typename T> 
     62  bool CTransformation<T>::registerTransformation(ETranformationType transType, CreateTransformationCallBack createFn) 
     63  { 
     64    if (0 == transformationCreationCallBacks_) 
     65      transformationCreationCallBacks_ = new CallBackMap(); 
     66 
     67    return (*transformationCreationCallBacks_).insert(make_pair(transType, createFn)).second; 
     68  } 
     69 
     70  template<typename T> 
     71  bool CTransformation<T>::unregisterTransformation(ETranformationType transType) 
     72  { 
     73    int transTypeInt = transType; 
     74    return (1 == (*transformationCreationCallBacks_).erase(transType)); 
     75  } 
    3476 
    3577} // namespace xios 
Note: See TracChangeset for help on using the changeset viewer.