Changeset 836 for XIOS/trunk/src/node
- Timestamp:
- 04/08/16 15:00:45 (8 years ago)
- Location:
- XIOS/trunk/src/node
- Files:
-
- 18 edited
Legend:
- Unmodified
- Added
- Removed
-
XIOS/trunk/src/node/axis.cpp
r829 r836 41 41 CAxis::~CAxis(void) 42 42 { /* Ne rien faire de plus */ } 43 44 std::map<StdString, ETranformationType> CAxis::transformationMapList_ = std::map<StdString, ETranformationType>(); 45 bool CAxis::dummyTransformationMapList_ = CAxis::initializeTransformationMap(CAxis::transformationMapList_); 46 bool CAxis::initializeTransformationMap(std::map<StdString, ETranformationType>& m) 47 { 48 m["zoom_axis"] = TRANS_ZOOM_AXIS; 49 m["interpolate_axis"] = TRANS_INTERPOLATE_AXIS; 50 m["inverse_axis"] = TRANS_INVERSE_AXIS; 51 } 43 52 44 53 ///--------------------------------------------------------------- … … 884 893 } 885 894 895 CTransformation<CAxis>* CAxis::addTransformation(ETranformationType transType, const StdString& id) 896 { 897 transformationMap_.push_back(std::make_pair(transType, CTransformation<CAxis>::createTransformation(transType,id))); 898 return transformationMap_.back().second; 899 } 900 886 901 bool CAxis::hasTransformation() 887 902 { … … 948 963 if (node.goToChildElement()) 949 964 { 950 StdString inverseAxisDefRoot("inverse_axis_definition"); 951 StdString inverse("inverse_axis"); 952 StdString zoomAxisDefRoot("zoom_axis_definition"); 953 StdString zoom("zoom_axis"); 954 StdString interpAxisDefRoot("interpolate_axis_definition"); 955 StdString interp("interpolate_axis"); 965 StdString nodeElementName; 956 966 do 957 967 { … … 960 970 { nodeId = node.getAttributes()["id"]; } 961 971 962 if (node.getElementName() == inverse) { 963 CInverseAxis* tmp = (CInverseAxisGroup::get(inverseAxisDefRoot))->createChild(nodeId); 964 tmp->parse(node); 965 transformationMap_.push_back(std::make_pair(TRANS_INVERSE_AXIS,tmp)); 966 } 967 else if (node.getElementName() == zoom) { 968 CZoomAxis* tmp = (CZoomAxisGroup::get(zoomAxisDefRoot))->createChild(nodeId); 969 tmp->parse(node); 970 transformationMap_.push_back(std::make_pair(TRANS_ZOOM_AXIS,tmp)); 971 } 972 else if (node.getElementName() == interp) { 973 CInterpolateAxis* tmp = (CInterpolateAxisGroup::get(interpAxisDefRoot))->createChild(nodeId); 974 tmp->parse(node); 975 transformationMap_.push_back(std::make_pair(TRANS_INTERPOLATE_AXIS,tmp)); 972 nodeElementName = node.getElementName(); 973 std::map<StdString, ETranformationType>::const_iterator ite = transformationMapList_.end(), it; 974 it = transformationMapList_.find(nodeElementName); 975 if (ite != it) 976 { 977 transformationMap_.push_back(std::make_pair(it->second, CTransformation<CAxis>::createTransformation(it->second, 978 nodeId, 979 &node))); 976 980 } 977 981 } while (node.goToNextElement()) ; -
XIOS/trunk/src/node/axis.hpp
r823 r836 113 113 TransMapTypes getAllTransformations(); 114 114 void fillInValues(const CArray<double,1>& values); 115 void duplicateTransformation(CAxis*); \ 115 void duplicateTransformation(CAxis*); 116 CTransformation<CAxis>* addTransformation(ETranformationType transType, const StdString& id=""); 116 117 117 118 public: … … 162 163 std::map<int, CArray<int,1> > indiSrv_; 163 164 bool hasBounds_; 165 166 private: 167 static bool initializeTransformationMap(std::map<StdString, ETranformationType>& m); 168 static std::map<StdString, ETranformationType> transformationMapList_; 169 static bool dummyTransformationMapList_; 170 164 171 DECLARE_REF_FUNC(Axis,axis) 165 172 }; // class CAxis -
XIOS/trunk/src/node/domain.cpp
r829 r836 56 56 CDomain* domain = CDomainGroup::get("domain_definition")->createChild(); 57 57 return domain; 58 } 59 60 std::map<StdString, ETranformationType> CDomain::transformationMapList_ = std::map<StdString, ETranformationType>(); 61 bool CDomain::_dummyTransformationMapList = CDomain::initializeTransformationMap(CDomain::transformationMapList_); 62 63 bool CDomain::initializeTransformationMap(std::map<StdString, ETranformationType>& m) 64 { 65 m["zoom_domain"] = TRANS_ZOOM_DOMAIN; 66 m["interpolate_domain"] = TRANS_INTERPOLATE_DOMAIN; 67 m["generate_rectilinear_domain"] = TRANS_GENERATE_RECTILINEAR_DOMAIN; 58 68 } 59 69 … … 1906 1916 } 1907 1917 1918 CTransformation<CDomain>* CDomain::addTransformation(ETranformationType transType, const StdString& id) 1919 { 1920 transformationMap_.push_back(std::make_pair(transType, CTransformation<CDomain>::createTransformation(transType,id))); 1921 return transformationMap_.back().second; 1922 } 1923 1908 1924 /*! 1909 1925 Check whether a domain has transformation … … 1987 2003 if (node.goToChildElement()) 1988 2004 { 1989 StdString zoomDomainDefRoot("zoom_domain_definition"); 1990 StdString zoom("zoom_domain"); 1991 StdString interpDomainDefRoot("interpolate_domain_definition"); 1992 StdString interpFromFile("interpolate_domain"); 1993 StdString generateRectilinearDefRoot("generate_rectilinear_domain_definition"); 1994 StdString generateRectilinear("generate_rectilinear_domain"); 2005 StdString nodeElementName; 1995 2006 do 1996 2007 { … … 1999 2010 { nodeId = node.getAttributes()["id"]; } 2000 2011 2001 if (node.getElementName() == zoom) { 2002 CZoomDomain* tmp = (CZoomDomainGroup::get(zoomDomainDefRoot))->createChild(nodeId); 2003 tmp->parse(node); 2004 transformationMap_.push_back(std::make_pair(TRANS_ZOOM_DOMAIN,tmp)); 2005 } 2006 else if (node.getElementName() == interpFromFile) 2012 nodeElementName = node.getElementName(); 2013 std::map<StdString, ETranformationType>::const_iterator ite = transformationMapList_.end(), it; 2014 it = transformationMapList_.find(nodeElementName); 2015 if (ite != it) 2007 2016 { 2008 CInterpolateDomain* tmp = (CInterpolateDomainGroup::get(interpDomainDefRoot))->createChild(nodeId); 2009 tmp->parse(node); 2010 transformationMap_.push_back(std::make_pair(TRANS_INTERPOLATE_DOMAIN,tmp)); 2011 } 2012 else if (node.getElementName() == generateRectilinear) 2013 { 2014 CGenerateRectilinearDomain* tmp = (CGenerateRectilinearDomainGroup::get(generateRectilinearDefRoot))->createChild(nodeId); 2015 tmp->parse(node); 2016 transformationMap_.push_back(std::make_pair(TRANS_GENERATE_RECTILINEAR_DOMAIN,tmp)); 2017 transformationMap_.push_back(std::make_pair(it->second, CTransformation<CDomain>::createTransformation(it->second, 2018 nodeId, 2019 &node))); 2017 2020 } 2018 2021 } while (node.goToNextElement()) ; -
XIOS/trunk/src/node/domain.hpp
r823 r836 79 79 void redistribute(int nbLocalDomain); 80 80 void duplicateTransformation(CDomain*); 81 CTransformation<CDomain>* addTransformation(ETranformationType transType, const StdString& id=""); 81 82 82 83 public: … … 198 199 bool isUnstructed_; 199 200 201 private: 202 static bool initializeTransformationMap(std::map<StdString, ETranformationType>& m); 203 static std::map<StdString, ETranformationType> transformationMapList_; 204 static bool _dummyTransformationMapList; 205 200 206 DECLARE_REF_FUNC(Domain,domain) 201 207 -
XIOS/trunk/src/node/generate_rectilinear_domain.cpp
r775 r836 16 16 CGenerateRectilinearDomain::~CGenerateRectilinearDomain(void) 17 17 {} 18 19 CTransformation<CDomain>* CGenerateRectilinearDomain::create(const StdString& id, xml::CXMLNode* node) 20 { 21 CGenerateRectilinearDomain* genDomain = CGenerateRectilinearDomainGroup::get("generate_rectilinear_domain_definition")->createChild(id); 22 if (node) genDomain->parse(*node); 23 return static_cast<CTransformation<CDomain>*>(genDomain); 24 } 25 26 bool CGenerateRectilinearDomain::_dummyRegistered = CGenerateRectilinearDomain::registerTrans(); 27 bool CGenerateRectilinearDomain::registerTrans() 28 { 29 registerTransformation(TRANS_GENERATE_RECTILINEAR_DOMAIN, create); 30 } 18 31 19 32 //---------------------------------------------------------------- -
XIOS/trunk/src/node/generate_rectilinear_domain.hpp
r687 r836 57 57 static ENodeType GetType(void); 58 58 private: 59 59 static bool registerTrans(); 60 static CTransformation<CDomain>* create(const StdString& id, xml::CXMLNode* node); 61 static bool _dummyRegistered; 60 62 }; // class CGenerateRectilinearDomain 61 63 -
XIOS/trunk/src/node/interpolate_axis.cpp
r827 r836 17 17 CInterpolateAxis::~CInterpolateAxis(void) 18 18 {} 19 20 CTransformation<CAxis>* CInterpolateAxis::create(const StdString& id, xml::CXMLNode* node) 21 { 22 CInterpolateAxis* interpAxis = CInterpolateAxisGroup::get("interpolate_axis_definition")->createChild(id); 23 if (node) interpAxis->parse(*node); 24 return static_cast<CTransformation<CAxis>*>(interpAxis); 25 } 26 27 bool CInterpolateAxis::registerTrans() 28 { 29 return registerTransformation(TRANS_INTERPOLATE_AXIS, CInterpolateAxis::create); 30 } 31 32 bool CInterpolateAxis::_dummyRegistered = CInterpolateAxis::registerTrans(); 19 33 20 34 //---------------------------------------------------------------- -
XIOS/trunk/src/node/interpolate_axis.hpp
r827 r836 59 59 static ENodeType GetType(void); 60 60 private: 61 61 static bool registerTrans(); 62 static CTransformation<CAxis>* create(const StdString& id, xml::CXMLNode* node); 63 static bool _dummyRegistered; 62 64 }; // class CInterpolateAxis 63 65 -
XIOS/trunk/src/node/interpolate_domain.cpp
r689 r836 16 16 CInterpolateDomain::~CInterpolateDomain(void) 17 17 {} 18 19 CTransformation<CDomain>* CInterpolateDomain::create(const StdString& id, xml::CXMLNode* node) 20 { 21 CInterpolateDomain* interpDomain = CInterpolateDomainGroup::get("interpolate_domain_definition")->createChild(id); 22 if (node) interpDomain->parse(*node); 23 return static_cast<CTransformation<CDomain>*>(interpDomain); 24 } 25 26 bool CInterpolateDomain::_dummyRegistered = CInterpolateDomain::registerTrans(); 27 bool CInterpolateDomain::registerTrans() 28 { 29 registerTransformation(TRANS_INTERPOLATE_DOMAIN, create); 30 } 18 31 19 32 //---------------------------------------------------------------- -
XIOS/trunk/src/node/interpolate_domain.hpp
r689 r836 57 57 static ENodeType GetType(void); 58 58 private: 59 59 static bool registerTrans(); 60 static CTransformation<CDomain>* create(const StdString& id, xml::CXMLNode* node); 61 static bool _dummyRegistered; 60 62 }; // class CInterpolateDomain 61 63 -
XIOS/trunk/src/node/inverse_axis.cpp
r621 r836 17 17 {} 18 18 19 CTransformation<CAxis>* CInverseAxis::create(const StdString& id, xml::CXMLNode* node) 20 { 21 CInverseAxis* invAxis = CInverseAxisGroup::get("inverse_axis_definition")->createChild(id); 22 if (node) invAxis->parse(*node); 23 return static_cast<CTransformation<CAxis>*>(invAxis); 24 } 25 26 bool CInverseAxis::registerTrans() 27 { 28 return registerTransformation(TRANS_INVERSE_AXIS, CInverseAxis::create); 29 } 30 31 bool CInverseAxis::_dummyRegistered = CInverseAxis::registerTrans(); 32 19 33 //---------------------------------------------------------------- 20 21 34 StdString CInverseAxis::GetName(void) { return StdString("inverse_axis"); } 22 35 StdString CInverseAxis::GetDefName(void) { return StdString("inverse_axis"); } -
XIOS/trunk/src/node/inverse_axis.hpp
r625 r836 54 54 static StdString GetDefName(void); 55 55 static ENodeType GetType(void); 56 56 57 private: 58 static bool registerTrans(); 59 static CTransformation<CAxis>* create(const StdString& id, xml::CXMLNode* node); 60 static bool _dummyRegistered; 57 61 58 62 }; // class CInverseAxis -
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 -
XIOS/trunk/src/node/transformation_enum.hpp
r689 r836 7 7 typedef enum transformation_type 8 8 { 9 TRANS_ZOOM_AXIS ,10 TRANS_INVERSE_AXIS ,11 TRANS_INTERPOLATE_AXIS ,12 TRANS_ZOOM_DOMAIN ,13 TRANS_INTERPOLATE_DOMAIN ,14 TRANS_GENERATE_RECTILINEAR_DOMAIN 9 TRANS_ZOOM_AXIS = 0, 10 TRANS_INVERSE_AXIS = 1, 11 TRANS_INTERPOLATE_AXIS = 2, 12 TRANS_ZOOM_DOMAIN = 3, 13 TRANS_INTERPOLATE_DOMAIN = 4, 14 TRANS_GENERATE_RECTILINEAR_DOMAIN = 5 15 15 } ETranformationType; 16 16 -
XIOS/trunk/src/node/zoom_axis.cpp
r787 r836 16 16 CZoomAxis::~CZoomAxis(void) 17 17 {} 18 19 CTransformation<CAxis>* CZoomAxis::create(const StdString& id, xml::CXMLNode* node) 20 { 21 CZoomAxis* zoomAxis = CZoomAxisGroup::get("zoom_axis_definition")->createChild(id); 22 if (node) zoomAxis->parse(*node); 23 return static_cast<CTransformation<CAxis>*>(zoomAxis); 24 } 25 26 bool CZoomAxis::registerTrans() 27 { 28 return registerTransformation(TRANS_ZOOM_AXIS, CZoomAxis::create); 29 } 30 31 bool CZoomAxis::_dummyRegistered = CZoomAxis::registerTrans(); 18 32 19 33 //---------------------------------------------------------------- -
XIOS/trunk/src/node/zoom_axis.hpp
r625 r836 57 57 static ENodeType GetType(void); 58 58 private: 59 59 static bool registerTrans(); 60 static CTransformation<CAxis>* create(const StdString& id, xml::CXMLNode* node); 61 static bool _dummyRegistered; 60 62 }; // class CZoomAxis 61 63 -
XIOS/trunk/src/node/zoom_domain.cpp
r787 r836 16 16 CZoomDomain::~CZoomDomain(void) 17 17 {} 18 19 CTransformation<CDomain>* CZoomDomain::create(const StdString& id, xml::CXMLNode* node) 20 { 21 CZoomDomain* zoomDomain = CZoomDomainGroup::get("zoom_domain_definition")->createChild(id); 22 if (node) zoomDomain->parse(*node); 23 return static_cast<CTransformation<CDomain>*>(zoomDomain); 24 } 25 26 bool CZoomDomain::_dummyRegistered = CZoomDomain::registerTrans(); 27 bool CZoomDomain::registerTrans() 28 { 29 registerTransformation(TRANS_ZOOM_DOMAIN, CZoomDomain::create); 30 } 18 31 19 32 //---------------------------------------------------------------- -
XIOS/trunk/src/node/zoom_domain.hpp
r631 r836 57 57 static ENodeType GetType(void); 58 58 private: 59 59 static bool registerTrans(); 60 static CTransformation<CDomain>* create(const StdString& id, xml::CXMLNode* node); 61 static bool _dummyRegistered; 60 62 }; // class CZoomDomain 61 63
Note: See TracChangeset
for help on using the changeset viewer.