Changeset 346 for XIOS/trunk/src/node/context.cpp
- Timestamp:
- 04/12/12 17:02:23 (12 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
XIOS/trunk/src/node/context.cpp
r345 r346 12 12 #include "context_server.hpp" 13 13 #include "nc4_data_output.hpp" 14 #include "node_type.hpp" 14 15 15 16 namespace xios { 17 18 shared_ptr<CContextGroup> CContext::root ; 16 19 17 20 /// ////////////////////// Définitions ////////////////////// /// … … 41 44 //---------------------------------------------------------------- 42 45 43 boost::shared_ptr<CContextGroup> CContext:: GetContextGroup(void)46 boost::shared_ptr<CContextGroup> CContext::getRoot(void) 44 47 { 45 static boost::shared_ptr<CContextGroup> group_context 46 (new CContextGroup(xml::CXMLNode::GetRootName())); 47 return (group_context); 48 if (root.get()==NULL) root=shared_ptr<CContextGroup>(new CContextGroup(xml::CXMLNode::GetRootName())) ; 49 return root; 48 50 } 49 51 … … 134 136 #define DECLARE_NODE(Name_, name_) \ 135 137 if (name.compare(C##Name_##Definition::GetDefName()) == 0) \ 136 { CObjectFactory::CreateObject<C##Name_##Definition>(C##Name_##Definition::GetDefName()) -> parse(node); \ 137 continue; } 138 { C##Name_##Definition::create(C##Name_##Definition::GetDefName()) -> parse(node) ; continue; } 138 139 #define DECLARE_NODE_PAR(Name_, name_) 139 140 #include "node_type.conf" 140 141 141 142 DEBUG(<< "L'élément nommé \'" << name 142 << "\' dans le contexte \'" << C ObjectFactory::GetCurrentContextId()143 << "\' dans le contexte \'" << CContext::getCurrent()->getId() 143 144 << "\' ne représente pas une définition !"); 144 145 … … 153 154 void CContext::ShowTree(StdOStream & out) 154 155 { 155 StdString currentContextId = 156 CObjectFactory::GetCurrentContextId(); 156 StdString currentContextId = CContext::getCurrent() -> getId() ; 157 157 std::vector<boost::shared_ptr<CContext> > def_vector = 158 CContext:: GetContextGroup()->getChildList();158 CContext::getRoot()->getChildList(); 159 159 std::vector<boost::shared_ptr<CContext> >::iterator 160 160 it = def_vector.begin(), end = def_vector.end(); … … 166 166 { 167 167 boost::shared_ptr<CContext> context = *it; 168 C TreeManager::SetCurrentContextId(context->getId());168 CContext::setCurrent(context->getId()); 169 169 out << *context << std::endl; 170 170 } 171 171 172 172 out << "</" << xml::CXMLNode::GetRootName() << " >" << std::endl; 173 C TreeManager::SetCurrentContextId(currentContextId);173 CContext::setCurrent(currentContextId); 174 174 } 175 175 … … 179 179 { 180 180 SuperClass::toBinary(os); 181 181 182 182 #define DECLARE_NODE(Name_, name_) \ 183 183 { \ 184 184 ENodeType renum = C##Name_##Definition::GetType(); \ 185 bool val = CObjectFactory::HasObject<C##Name_##Definition> \ 186 (C##Name_##Definition::GetDefName()); \ 185 bool val = C##Name_##Definition::has(C##Name_##Definition::GetDefName()); \ 187 186 os.write (reinterpret_cast<const char*>(&renum), sizeof(ENodeType)); \ 188 187 os.write (reinterpret_cast<const char*>(&val), sizeof(bool)); \ 189 if (val) CObjectFactory::GetObject<C##Name_##Definition> \ 190 (C##Name_##Definition::GetDefName())->toBinary(os); \ 188 if (val) C##Name_##Definition::get(C##Name_##Definition::GetDefName())->toBinary(os); \ 191 189 } 192 190 #define DECLARE_NODE_PAR(Name_, name_) … … 208 206 ERROR("CContext::fromBinary(StdIStream & is)", \ 209 207 << "[ renum = " << renum << "] Bad type !"); \ 210 if (val) CObjectFactory::CreateObject<C##Name_##Definition> \ 211 (C##Name_##Definition::GetDefName()) -> fromBinary(is); \ 208 if (val) C##Name_##Definition::create(C##Name_##Definition::GetDefName()) -> fromBinary(is); \ 212 209 } 213 210 #define DECLARE_NODE_PAR(Name_, name_) … … 233 230 234 231 #define DECLARE_NODE(Name_, name_) \ 235 if (C ObjectFactory::HasObject<C##Name_##Definition>(C##Name_##Definition::GetDefName())) \236 oss << * CObjectFactory::GetObject<C##Name_##Definition>(C##Name_##Definition::GetDefName()) << std::endl;232 if (C##Name_##Definition::has(C##Name_##Definition::GetDefName())) \ 233 oss << * C##Name_##Definition::get(C##Name_##Definition::GetDefName()) << std::endl; 237 234 #define DECLARE_NODE_PAR(Name_, name_) 238 235 #include "node_type.conf" … … 250 247 { 251 248 #define DECLARE_NODE(Name_, name_) \ 252 if (C ObjectFactory::HasObject<C##Name_##Definition>(C##Name_##Definition::GetDefName())) \253 CObjectFactory::GetObject<C##Name_##Definition>(C##Name_##Definition::GetDefName())->solveDescInheritance();249 if (C##Name_##Definition::has(C##Name_##Definition::GetDefName())) \ 250 C##Name_##Definition::get(C##Name_##Definition::GetDefName())->solveDescInheritance(); 254 251 #define DECLARE_NODE_PAR(Name_, name_) 255 252 #include "node_type.conf" … … 262 259 return ( 263 260 #define DECLARE_NODE(Name_, name_) \ 264 C ObjectFactory::HasObject<C##Name_##Definition>(C##Name_##Definition::GetDefName()) ||261 C##Name_##Definition::has(C##Name_##Definition::GetDefName()) || 265 262 #define DECLARE_NODE_PAR(Name_, name_) 266 263 #include "node_type.conf" … … 273 270 { 274 271 if (!this->hasId()) return; 275 std::vector<boost::shared_ptr<CField> > allField272 std::vector<boost::shared_ptr<CField> >& allField 276 273 = CObjectTemplate<CField>::GetAllVectobject(this->getId()); 277 274 std::vector<boost::shared_ptr<CField> >::iterator … … 379 376 380 377 // Résolution des héritages par référence au niveau des fichiers. 381 const std::vector<boost::shared_ptr<CFile> > & allFiles 382 = CObjectFactory::GetObjectVector<CFile>(); 378 const std::vector<boost::shared_ptr<CFile> > & allFiles=CFile::getAll() ; 383 379 384 380 for (unsigned int i = 0; i < allFiles.size(); i++) … … 388 384 void CContext::findEnabledFiles(void) 389 385 { 390 const std::vector<boost::shared_ptr<CFile> > & allFiles 391 = CObjectFactory::GetObjectVector<CFile>(); 386 const std::vector<boost::shared_ptr<CFile> > & allFiles = CFile::getAll(); 392 387 393 388 for (unsigned int i = 0; i < allFiles.size(); i++) … … 541 536 } 542 537 543 shared_ptr<CContext> CContext:: current(void)538 shared_ptr<CContext> CContext::getCurrent(void) 544 539 { 545 540 return CObjectFactory::GetObject<CContext>(CObjectFactory::GetCurrentContextId()) ; 546 541 } 547 542 543 void CContext::setCurrent(const string& id) 544 { 545 CObjectFactory::SetCurrentContextId(id); 546 CGroupFactory::SetCurrentContextId(id); 547 } 548 549 boost::shared_ptr<CContext> CContext::create(const StdString& id) 550 { 551 CContext::setCurrent(id) ; 552 553 bool hasctxt = CContext::has(id); 554 boost::shared_ptr<CContext> context = CObjectFactory::CreateObject<CContext>(id); 555 if (!hasctxt) CGroupFactory::AddChild(getRoot(), context); 556 557 #define DECLARE_NODE(Name_, name_) \ 558 C##Name_##Definition::create(C##Name_##Definition::GetDefName()); 559 #define DECLARE_NODE_PAR(Name_, name_) 560 #include "node_type.conf" 561 562 return (context); 563 } 548 564 } // namespace xios
Note: See TracChangeset
for help on using the changeset viewer.