Changeset 1103
- Timestamp:
- 04/21/17 17:39:29 (7 years ago)
- Location:
- XIOS/dev/branch_yushan
- Files:
-
- 36 edited
Legend:
- Unmodified
- Added
- Removed
-
XIOS/dev/branch_yushan/inputs/iodef.xml
r1063 r1103 8 8 <field_definition level="1" enabled=".FALSE."> 9 9 <field id="field_A" operation="average" freq_op="3600s" grid_ref="grid_A"/> 10 <field id="field_A_zoom" operation="average" freq_op="3600s" field_ref="field_A" grid_ref="grid_A_zoom"/> 10 <field id="field_A_zoom" operation="average" freq_op="3600s" field_ref="field_A" grid_ref="grid_A_zoom"/> 11 11 </field_definition> 12 12 -
XIOS/dev/branch_yushan/src/attribute_map.hpp
r1095 r1103 69 69 /// Propriété statique /// 70 70 static CAttributeMap * Current; 71 //#pragma omp threadprivate (Current)71 #pragma omp threadprivate (Current) 72 72 73 73 }; // class CAttributeMap -
XIOS/dev/branch_yushan/src/buffer_client.hpp
r1095 r1103 16 16 public: 17 17 static size_t maxRequestSize; 18 //#pragma omp threadprivate(maxRequestSize)18 #pragma omp threadprivate(maxRequestSize) 19 19 20 20 CClientBuffer(MPI_Comm intercomm, int serverRank, StdSize bufferSize, StdSize maxBufferedEvents); -
XIOS/dev/branch_yushan/src/filter/spatial_transform_filter.cpp
r1095 r1103 64 64 } 65 65 66 std::map<CGridTransformation*, boost::shared_ptr<CSpatialTransformFilterEngine> > CSpatialTransformFilterEngine::engines;66 std::map<CGridTransformation*, boost::shared_ptr<CSpatialTransformFilterEngine> > *CSpatialTransformFilterEngine::engines_ptr = 0; 67 67 68 68 CSpatialTransformFilterEngine* CSpatialTransformFilterEngine::get(CGridTransformation* gridTransformation) … … 72 72 "Impossible to get the requested engine, the grid transformation is invalid."); 73 73 74 std::map<CGridTransformation*, boost::shared_ptr<CSpatialTransformFilterEngine> >::iterator it = engines.find(gridTransformation); 75 if (it == engines.end()) 74 if(engines_ptr == NULL) engines_ptr = new std::map<CGridTransformation*, boost::shared_ptr<CSpatialTransformFilterEngine> >; 75 76 std::map<CGridTransformation*, boost::shared_ptr<CSpatialTransformFilterEngine> >::iterator it = engines_ptr->find(gridTransformation); 77 if (it == engines_ptr->end()) 76 78 { 77 79 boost::shared_ptr<CSpatialTransformFilterEngine> engine(new CSpatialTransformFilterEngine(gridTransformation)); 78 it = engines .insert(std::make_pair(gridTransformation, engine)).first;80 it = engines_ptr->insert(std::make_pair(gridTransformation, engine)).first; 79 81 } 80 82 -
XIOS/dev/branch_yushan/src/filter/spatial_transform_filter.hpp
r1095 r1103 102 102 103 103 //! The allocated engines 104 static std::map<CGridTransformation*, boost::shared_ptr<CSpatialTransformFilterEngine> > engines; 105 // #pragma omp threadprivate(engines) 104 //static std::map<CGridTransformation*, boost::shared_ptr<CSpatialTransformFilterEngine> > engines; 105 static std::map<CGridTransformation*, boost::shared_ptr<CSpatialTransformFilterEngine> > *engines_ptr; 106 #pragma omp threadprivate(engines_ptr) 106 107 107 108 }; // class CSpatialTransformFilterEngine -
XIOS/dev/branch_yushan/src/indent.hpp
r1095 r1103 10 10 public: 11 11 static int defaultIncSize; 12 //#pragma omp threadprivate(defaultIncSize)12 #pragma omp threadprivate(defaultIncSize) 13 13 14 14 static int index ; 15 //#pragma omp threadprivate(index)15 #pragma omp threadprivate(index) 16 16 17 17 int incSize ; -
XIOS/dev/branch_yushan/src/indent_xml.cpp
r1095 r1103 15 15 { 16 16 static unsigned int LineNB = 1; 17 //#pragma omp threadprivate(LineNB)17 #pragma omp threadprivate(LineNB) 18 18 19 19 if (CIndent::WithLine) out << LineNB++ << ". "; -
XIOS/dev/branch_yushan/src/indent_xml.hpp
r1095 r1103 22 22 /// Propriétés statiques /// 23 23 static unsigned int Indent; 24 //#pragma omp threadprivate(Indent)24 #pragma omp threadprivate(Indent) 25 25 26 26 static StdString Increm; 27 //#pragma omp threadprivate(Increm)27 #pragma omp threadprivate(Increm) 28 28 29 29 static bool WithLine; 30 //#pragma omp threadprivate(WithLine)30 #pragma omp threadprivate(WithLine) 31 31 32 32 }; // class CIndent -
XIOS/dev/branch_yushan/src/memtrack.cpp
r1095 r1103 68 68 private: // static member variables 69 69 static BlockHeader *ourFirstNode; 70 //#pragma omp threadprivate(ourFirstNode)70 #pragma omp threadprivate(ourFirstNode) 71 71 72 72 private: // member variables -
XIOS/dev/branch_yushan/src/node/axis.cpp
r1095 r1103 45 45 46 46 std::map<StdString, ETranformationType> CAxis::transformationMapList_ = std::map<StdString, ETranformationType>(); 47 48 std::map<StdString, ETranformationType> *CAxis::transformationMapList_ptr = new std::map<StdString, ETranformationType>(); 49 47 50 bool CAxis::dummyTransformationMapList_ = CAxis::initializeTransformationMap(CAxis::transformationMapList_); 51 //bool CAxis::dummyTransformationMapList_ = CAxis::initializeTransformationMap(*CAxis::transformationMapList_ptr); 52 48 53 bool CAxis::initializeTransformationMap(std::map<StdString, ETranformationType>& m) 49 54 { … … 53 58 m["reduce_domain"] = TRANS_REDUCE_DOMAIN_TO_AXIS; 54 59 m["extract_domain"] = TRANS_EXTRACT_DOMAIN_TO_AXIS; 60 61 // m.insert(m.end(), make_pair("zoom_axis", TRANS_ZOOM_AXIS)); printf("zoom_axis insert\n"); 62 // m.insert(m.end(), make_pair("interpolate_axis", TRANS_INTERPOLATE_AXIS)); printf("interpolate_axis insert\n"); 63 // m.insert(m.end(), make_pair("inverse_axis", TRANS_INVERSE_AXIS)); printf("inverse_axis insert\n"); 64 // m.insert(m.end(), make_pair("reduce_domain", TRANS_REDUCE_DOMAIN_TO_AXIS)); printf("reduce_domain insert\n"); 65 // m.insert(m.end(), make_pair("extract_domain", TRANS_EXTRACT_DOMAIN_TO_AXIS)); printf("extract_domain insert\n"); 55 66 } 56 67 -
XIOS/dev/branch_yushan/src/node/axis.hpp
r1095 r1103 166 166 private: 167 167 static bool initializeTransformationMap(std::map<StdString, ETranformationType>& m); 168 168 169 static std::map<StdString, ETranformationType> transformationMapList_; 169 // #pragma omp threadprivate(transformationMapList_) 170 171 static std::map<StdString, ETranformationType> *transformationMapList_ptr; 172 #pragma omp threadprivate(transformationMapList_ptr) 170 173 171 174 static bool dummyTransformationMapList_; 172 //#pragma omp threadprivate(dummyTransformationMapList_)175 #pragma omp threadprivate(dummyTransformationMapList_) 173 176 174 177 DECLARE_REF_FUNC(Axis,axis) -
XIOS/dev/branch_yushan/src/node/compute_connectivity_domain.hpp
r1095 r1103 60 60 static CTransformation<CDomain>* create(const StdString& id, xml::CXMLNode* node); 61 61 static bool _dummyRegistered; 62 //#pragma omp threadprivate(_dummyRegistered)62 #pragma omp threadprivate(_dummyRegistered) 63 63 64 64 }; // class CComputeConnectivityDomain -
XIOS/dev/branch_yushan/src/node/context.cpp
r1102 r1103 1158 1158 void CContext::updateCalendar(int step) 1159 1159 { 1160 info(50) << "updateCalendar : before : " << calendar->getCurrentDate() << endl;1160 //info(50) << "updateCalendar : before : " << calendar->getCurrentDate() << endl; 1161 1161 calendar->update(step); 1162 info(50) << "updateCalendar : after : " << calendar->getCurrentDate() << endl;1162 //info(50) << "updateCalendar : after : " << calendar->getCurrentDate() << endl; 1163 1163 1164 1164 if (hasClient) -
XIOS/dev/branch_yushan/src/node/expand_domain.hpp
r1095 r1103 60 60 static CTransformation<CDomain>* create(const StdString& id, xml::CXMLNode* node); 61 61 static bool _dummyRegistered; 62 //#pragma omp threadprivate(_dummyRegistered)62 #pragma omp threadprivate(_dummyRegistered) 63 63 64 64 }; // class CExpandDomain -
XIOS/dev/branch_yushan/src/node/extract_axis_to_scalar.hpp
r1095 r1103 60 60 static CTransformation<CScalar>* create(const StdString& id, xml::CXMLNode* node); 61 61 static bool _dummyRegistered; 62 //#pragma omp threadprivate(_dummyRegistered)62 #pragma omp threadprivate(_dummyRegistered) 63 63 }; // class CExtractAxisToScalar 64 64 -
XIOS/dev/branch_yushan/src/node/extract_domain_to_axis.hpp
r1072 r1103 60 60 static CTransformation<CAxis>* create(const StdString& id, xml::CXMLNode* node); 61 61 static bool _dummyRegistered; 62 //#pragma omp threadprivate(_dummyRegistered)62 #pragma omp threadprivate(_dummyRegistered) 63 63 }; // class CExtractDomainToAxis 64 64 -
XIOS/dev/branch_yushan/src/node/generate_rectilinear_domain.hpp
r1072 r1103 60 60 static CTransformation<CDomain>* create(const StdString& id, xml::CXMLNode* node); 61 61 static bool _dummyRegistered; 62 //#pragma omp threadprivate(_dummyRegistered)62 #pragma omp threadprivate(_dummyRegistered) 63 63 }; // class CGenerateRectilinearDomain 64 64 -
XIOS/dev/branch_yushan/src/node/interpolate_axis.hpp
r1072 r1103 62 62 static CTransformation<CAxis>* create(const StdString& id, xml::CXMLNode* node); 63 63 static bool _dummyRegistered; 64 //#pragma omp threadprivate(_dummyRegistered)64 #pragma omp threadprivate(_dummyRegistered) 65 65 66 66 }; // class CInterpolateAxis -
XIOS/dev/branch_yushan/src/node/interpolate_domain.hpp
r1072 r1103 60 60 static CTransformation<CDomain>* create(const StdString& id, xml::CXMLNode* node); 61 61 static bool _dummyRegistered; 62 //#pragma omp threadprivate(_dummyRegistered)62 #pragma omp threadprivate(_dummyRegistered) 63 63 }; // class CInterpolateDomain 64 64 -
XIOS/dev/branch_yushan/src/node/inverse_axis.hpp
r1072 r1103 59 59 static CTransformation<CAxis>* create(const StdString& id, xml::CXMLNode* node); 60 60 static bool _dummyRegistered; 61 //#pragma omp threadprivate(_dummyRegistered)61 #pragma omp threadprivate(_dummyRegistered) 62 62 63 63 }; // class CInverseAxis -
XIOS/dev/branch_yushan/src/node/reduce_axis_to_scalar.hpp
r1072 r1103 59 59 static CTransformation<CScalar>* create(const StdString& id, xml::CXMLNode* node); 60 60 static bool _dummyRegistered; 61 //#pragma omp threadprivate(_dummyRegistered)61 #pragma omp threadprivate(_dummyRegistered) 62 62 }; // class CReduceAxisToScalar 63 63 -
XIOS/dev/branch_yushan/src/node/reduce_domain_to_axis.hpp
r1072 r1103 60 60 static CTransformation<CAxis>* create(const StdString& id, xml::CXMLNode* node); 61 61 static bool _dummyRegistered; 62 //#pragma omp threadprivate(_dummyRegistered)62 #pragma omp threadprivate(_dummyRegistered) 63 63 }; // class CReduceDomainToAxis 64 64 -
XIOS/dev/branch_yushan/src/node/reduce_domain_to_scalar.hpp
r1072 r1103 60 60 static CTransformation<CScalar>* create(const StdString& id, xml::CXMLNode* node); 61 61 static bool _dummyRegistered; 62 //#pragma omp threadprivate(_dummyRegistered)62 #pragma omp threadprivate(_dummyRegistered) 63 63 }; // class CReduceDomainToScalar 64 64 -
XIOS/dev/branch_yushan/src/node/zoom_axis.hpp
r1072 r1103 60 60 static CTransformation<CAxis>* create(const StdString& id, xml::CXMLNode* node); 61 61 static bool _dummyRegistered; 62 //#pragma omp threadprivate(_dummyRegistered)62 #pragma omp threadprivate(_dummyRegistered) 63 63 }; // class CZoomAxis 64 64 -
XIOS/dev/branch_yushan/src/node/zoom_domain.hpp
r1072 r1103 60 60 static CTransformation<CDomain>* create(const StdString& id, xml::CXMLNode* node); 61 61 static bool _dummyRegistered; 62 //#pragma omp threadprivate(_dummyRegistered)62 #pragma omp threadprivate(_dummyRegistered) 63 63 64 64 }; // class CZoomDomain -
XIOS/dev/branch_yushan/src/timer.cpp
r652 r1103 8 8 { 9 9 std::map<std::string,CTimer> CTimer::allTimer; 10 std::map<std::string,CTimer> *CTimer::allTimer_ptr = 0; 10 11 11 12 CTimer::CTimer(const std::string& name_) : name(name_) … … 52 53 CTimer& CTimer::get(const std::string name) 53 54 { 54 std::map<std::string,CTimer>::iterator it = allTimer.find(name); 55 if (it == allTimer.end()) 56 it = allTimer.insert(std::make_pair(name, CTimer(name))).first; 55 // bkp 56 // std::map<std::string,CTimer>::iterator it = allTimer.find(name); 57 // if (it == allTimer.end()) 58 // it = allTimer.insert(std::make_pair(name, CTimer(name))).first; 59 // return it->second; 60 61 if(allTimer_ptr == NULL) allTimer_ptr = new std::map<std::string,CTimer>; 62 63 std::map<std::string,CTimer>::iterator it = (*allTimer_ptr).find(name); 64 if (it == (*allTimer_ptr).end()) 65 it = (*allTimer_ptr).insert(std::make_pair(name, CTimer(name))).first; 57 66 return it->second; 58 67 } -
XIOS/dev/branch_yushan/src/timer.hpp
r688 r1103 21 21 double getCumulatedTime(void); 22 22 static std::map<std::string,CTimer> allTimer; 23 24 static std::map<std::string,CTimer> *allTimer_ptr; 25 #pragma omp threadprivate(allTimer_ptr) 26 23 27 static double getTime(void); 24 28 static CTimer& get(std::string name); -
XIOS/dev/branch_yushan/src/transformation/Functions/reduction.cpp
r979 r1103 9 9 10 10 CReductionAlgorithm::CallBackMap* CReductionAlgorithm::reductionCreationCallBacks_ = 0; 11 std::map<StdString,EReductionType> CReductionAlgorithm::ReductionOperations = std::map<StdString,EReductionType>(); 12 bool CReductionAlgorithm::initReductionOperation(std::map<StdString,EReductionType>& m) 11 //std::map<StdString,EReductionType> CReductionAlgorithm::ReductionOperations = std::map<StdString,EReductionType>(); 12 std::map<StdString,EReductionType> *CReductionAlgorithm::ReductionOperations_ptr = 0; 13 14 // bool CReductionAlgorithm::initReductionOperation(std::map<StdString,EReductionType>& m) 15 // { 16 // // So so stupid way to intialize operation but it works ... 17 // m["sum"] = TRANS_REDUCE_SUM; 18 // CSumReductionAlgorithm::registerTrans(); 19 20 // m["min"] = TRANS_REDUCE_MIN; 21 // CMinReductionAlgorithm::registerTrans(); 22 23 // m["max"] = TRANS_REDUCE_MAX; 24 // CMaxReductionAlgorithm::registerTrans(); 25 26 // m["extract"] = TRANS_REDUCE_EXTRACT; 27 // CExtractReductionAlgorithm::registerTrans(); 28 29 // m["average"] = TRANS_REDUCE_AVERAGE; 30 // CAverageReductionAlgorithm::registerTrans(); 31 // } 32 33 bool CReductionAlgorithm::initReductionOperation(std::map<StdString,EReductionType>* m) 13 34 { 35 if(m==NULL) m=new std::map<StdString,EReductionType>(); 14 36 // So so stupid way to intialize operation but it works ... 15 m["sum"] = TRANS_REDUCE_SUM;37 (*m)["sum"] = TRANS_REDUCE_SUM; 16 38 CSumReductionAlgorithm::registerTrans(); 17 39 18 m["min"] = TRANS_REDUCE_MIN;40 (*m)["min"] = TRANS_REDUCE_MIN; 19 41 CMinReductionAlgorithm::registerTrans(); 20 42 21 m["max"] = TRANS_REDUCE_MAX;43 (*m)["max"] = TRANS_REDUCE_MAX; 22 44 CMaxReductionAlgorithm::registerTrans(); 23 45 24 m["extract"] = TRANS_REDUCE_EXTRACT;46 (*m)["extract"] = TRANS_REDUCE_EXTRACT; 25 47 CExtractReductionAlgorithm::registerTrans(); 26 48 27 m["average"] = TRANS_REDUCE_AVERAGE;49 (*m)["average"] = TRANS_REDUCE_AVERAGE; 28 50 CAverageReductionAlgorithm::registerTrans(); 29 51 } 30 52 31 bool CReductionAlgorithm::_dummyInit = CReductionAlgorithm::initReductionOperation(CReductionAlgorithm::ReductionOperations); 53 //bool CReductionAlgorithm::_dummyInit = CReductionAlgorithm::initReductionOperation(CReductionAlgorithm::ReductionOperations); 54 bool CReductionAlgorithm::_dummyInit = CReductionAlgorithm::initReductionOperation(CReductionAlgorithm::ReductionOperations_ptr); 32 55 33 56 CReductionAlgorithm* CReductionAlgorithm::createOperation(EReductionType reduceType) 34 57 { 35 58 int reduceTypeInt = reduceType; 59 if (0 == reductionCreationCallBacks_) 60 reductionCreationCallBacks_ = new CallBackMap(); 61 36 62 CallBackMap::const_iterator it = (*reductionCreationCallBacks_).find(reduceType); 37 63 if ((*reductionCreationCallBacks_).end() == it) -
XIOS/dev/branch_yushan/src/transformation/Functions/reduction.hpp
r1079 r1103 23 23 { 24 24 public: 25 static std::map<StdString,EReductionType> ReductionOperations; 25 //static std::map<StdString,EReductionType> ReductionOperations; 26 static std::map<StdString,EReductionType> *ReductionOperations_ptr; 27 #pragma omp threadprivate(ReductionOperations_ptr) 26 28 27 29 public: … … 59 61 typedef std::map<EReductionType, CreateOperationCallBack> CallBackMap; 60 62 static CallBackMap* reductionCreationCallBacks_; 61 //#pragma omp threadprivate(reductionCreationCallBacks_)63 #pragma omp threadprivate(reductionCreationCallBacks_) 62 64 63 65 static bool registerOperation(EReductionType reduceType, CreateOperationCallBack createFn); … … 65 67 66 68 protected: 67 static bool initReductionOperation(std::map<StdString,EReductionType>& m); 69 //static bool initReductionOperation(std::map<StdString,EReductionType>& m); 70 static bool initReductionOperation(std::map<StdString,EReductionType>* m); 68 71 static bool _dummyInit; 69 //#pragma omp threadprivate(_dummyInit)72 #pragma omp threadprivate(_dummyInit) 70 73 }; 71 74 -
XIOS/dev/branch_yushan/src/transformation/axis_algorithm_extract_domain.cpp
r1037 r1103 62 62 63 63 pos_ = algo->position; 64 reduction_ = CReductionAlgorithm::createOperation( CReductionAlgorithm::ReductionOperations[op]);64 reduction_ = CReductionAlgorithm::createOperation((*CReductionAlgorithm::ReductionOperations_ptr)[op]); 65 65 } 66 66 -
XIOS/dev/branch_yushan/src/transformation/axis_algorithm_reduce_domain.cpp
r1037 r1103 70 70 71 71 dir_ = (CReduceDomainToAxis::direction_attr::iDir == algo->direction) ? iDir : jDir; 72 reduction_ = CReductionAlgorithm::createOperation( CReductionAlgorithm::ReductionOperations[op]);72 reduction_ = CReductionAlgorithm::createOperation((*CReductionAlgorithm::ReductionOperations_ptr)[op]); 73 73 } 74 74 -
XIOS/dev/branch_yushan/src/transformation/grid_transformation_factory_impl.hpp
r1101 r1103 57 57 typedef std::map<ETranformationType, CreateTransformationCallBack> CallBackMap; 58 58 static CallBackMap* transformationCreationCallBacks_; 59 //#pragma omp threadprivate(transformationCreationCallBacks_)59 #pragma omp threadprivate(transformationCreationCallBacks_) 60 60 61 61 static bool registerTransformation(ETranformationType transType, CreateTransformationCallBack createFn); … … 82 82 std::map<int, int>& elementPositionInGridDst2DomainPosition) 83 83 { 84 if (0 == transformationCreationCallBacks_) 85 transformationCreationCallBacks_ = new CallBackMap(); 84 86 typename CallBackMap::const_iterator it = (*transformationCreationCallBacks_).find(transType); 85 87 if ((*transformationCreationCallBacks_).end() == it) -
XIOS/dev/branch_yushan/src/transformation/scalar_algorithm_extract_axis.cpp
r1037 r1103 49 49 StdString op = "extract"; 50 50 pos_ = algo->position; 51 reduction_ = CReductionAlgorithm::createOperation( CReductionAlgorithm::ReductionOperations[op]);51 reduction_ = CReductionAlgorithm::createOperation((*CReductionAlgorithm::ReductionOperations_ptr)[op]); 52 52 } 53 53 -
XIOS/dev/branch_yushan/src/transformation/scalar_algorithm_reduce_axis.cpp
r1037 r1103 75 75 } 76 76 77 if ( CReductionAlgorithm::ReductionOperations.end() == CReductionAlgorithm::ReductionOperations.find(op))77 if ((*CReductionAlgorithm::ReductionOperations_ptr).end() == (*CReductionAlgorithm::ReductionOperations_ptr).find(op)) 78 78 ERROR("CScalarAlgorithmReduceAxis::CScalarAlgorithmReduceAxis(CAxis* axisDestination, CAxis* axisSource, CReduceAxisToScalar* algo)", 79 79 << "Operation '" << op << "' not found. Please make sure to use a supported one" … … 81 81 << "Scalar destination " << scalarDestination->getId()); 82 82 83 reduction_ = CReductionAlgorithm::createOperation( CReductionAlgorithm::ReductionOperations[op]);83 reduction_ = CReductionAlgorithm::createOperation((*CReductionAlgorithm::ReductionOperations_ptr)[op]); 84 84 } 85 85 -
XIOS/dev/branch_yushan/src/transformation/scalar_algorithm_reduce_domain.cpp
r1037 r1103 69 69 } 70 70 71 if ( CReductionAlgorithm::ReductionOperations.end() == CReductionAlgorithm::ReductionOperations.find(op))71 if ((*CReductionAlgorithm::ReductionOperations_ptr).end() == (*CReductionAlgorithm::ReductionOperations_ptr).find(op)) 72 72 ERROR("CScalarAlgorithmReduceDomain::CScalarAlgorithmReduceDomain(CDomain* domainDestination, CDomain* domainSource, CReduceDomainToScalar* algo)", 73 73 << "Operation '" << op << "' not found. Please make sure to use a supported one" … … 75 75 << "Scalar destination " << scalarDestination->getId()); 76 76 77 reduction_ = CReductionAlgorithm::createOperation( CReductionAlgorithm::ReductionOperations[op]);77 reduction_ = CReductionAlgorithm::createOperation((*CReductionAlgorithm::ReductionOperations_ptr)[op]); 78 78 } 79 79 -
XIOS/dev/branch_yushan/src/xml_node.cpp
r591 r1103 8 8 9 9 StdString CXMLNode::RootName("simulation"); 10 // StdString CXMLNode::RootName = "simulation"; 10 11 11 12 CXMLNode::CXMLNode(rapidxml::xml_node<char> * const root)
Note: See TracChangeset
for help on using the changeset viewer.