Changeset 836 for XIOS/trunk/src/node/transformation.hpp
- Timestamp:
- 04/08/16 15:00:45 (8 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
XIOS/trunk/src/node/transformation.hpp
r827 r836 25 25 26 26 std::vector<StdString> checkAuxInputs() { return checkAuxInputs_(); } 27 static CTransformation<T>* createTransformation(ETranformationType transType, const StdString& id, xml::CXMLNode* node=0); 27 28 28 29 /// Destructeur /// … … 30 31 31 32 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: 32 41 virtual std::vector<StdString> checkAuxInputs_() { return std::vector<StdString>(); } 33 42 }; // 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 } 34 76 35 77 } // namespace xios
Note: See TracChangeset
for help on using the changeset viewer.