Ignore:
Timestamp:
04/13/11 15:15:12 (13 years ago)
Author:
hozdoba
Message:
 
File:
1 edited

Legend:

Unmodified
Added
Removed
  • XMLIO_V2/dev/dev_rv/src/xmlio/node/context.cpp

    r168 r173  
    11#include "context.hpp" 
     2 
     3#include "tree_manager.hpp" 
    24 
    35#include "attribute_template_impl.hpp" 
     
    6466                    << " ce dernier ne sera pas pris en compte lors du traitement !"); } 
    6567 
    66    #define DECLARE_NODE(Name_, name_)    \ 
    67       if (name.compare(C##Name_##Definition::GetDefName()) == 0) \ 
    68       { CObjectFactory::CreateObject<C##Name_##Definition>(C##Name_##Definition::GetDefName()) -> parse(node); \ 
     68#define DECLARE_NODE(Name_, name_)    \ 
     69   if (name.compare(C##Name_##Definition::GetDefName()) == 0) \ 
     70   { CObjectFactory::CreateObject<C##Name_##Definition>(C##Name_##Definition::GetDefName()) -> parse(node); \ 
    6971   continue; } 
    70    #define DECLARE_NODE_PAR(Name_, name_) 
    71    #include "node_type.conf" 
     72#define DECLARE_NODE_PAR(Name_, name_) 
     73#include "node_type.conf" 
    7274 
    7375            DEBUG(<< "L'élément nommé \'"     << name 
     
    9395 
    9496      out << "<? xml version=\"1.0\" ?>" << std::endl; 
    95       out << "< "  << xml::CXMLNode::GetRootName() << " >" << std::endl; 
     97      out << "<"  << xml::CXMLNode::GetRootName() << " >" << std::endl; 
    9698       
    9799      for (; it != end; it++) 
    98100      { 
    99          boost::shared_ptr<CContext> context = *it; 
    100          CObjectFactory::SetCurrentContextId(context->getId()); 
    101          CGroupFactory::SetCurrentContextId(context->getId()); 
     101         boost::shared_ptr<CContext> context = *it;          
     102         CTreeManager::SetCurrentContextId(context->getId());          
    102103         out << *context << std::endl; 
    103104      } 
    104105       
    105       out << "</ " << xml::CXMLNode::GetRootName() << " >" << std::endl; 
    106  
    107       CObjectFactory::SetCurrentContextId(currentContextId); 
    108        CGroupFactory::SetCurrentContextId(currentContextId); 
    109    } 
    110  
     106      out << "</" << xml::CXMLNode::GetRootName() << " >" << std::endl; 
     107      CTreeManager::SetCurrentContextId(currentContextId);   
     108   } 
     109    
     110   //---------------------------------------------------------------- 
     111    
     112   void CContext::toBinary(StdOStream & os) const 
     113   { 
     114      SuperClass::toBinary(os); 
     115        
     116#define DECLARE_NODE(Name_, name_)                                         \ 
     117   {                                                                       \ 
     118      ENodeType renum = C##Name_##Definition::GetType();                   \ 
     119      bool val = CObjectFactory::HasObject<C##Name_##Definition>           \ 
     120                     (C##Name_##Definition::GetDefName());                 \ 
     121      os.write (reinterpret_cast<const char*>(&renum), sizeof(ENodeType)); \ 
     122      os.write (reinterpret_cast<const char*>(&val), sizeof(bool));        \ 
     123      if (val) CObjectFactory::GetObject<C##Name_##Definition>             \ 
     124                     (C##Name_##Definition::GetDefName())->toBinary(os);   \ 
     125   }    
     126#define DECLARE_NODE_PAR(Name_, name_) 
     127#include "node_type.conf" 
     128   } 
     129    
     130   //---------------------------------------------------------------- 
     131    
     132   void CContext::fromBinary(StdIStream & is) 
     133   { 
     134      SuperClass::fromBinary(is); 
     135#define DECLARE_NODE(Name_, name_)                                         \ 
     136   {                                                                       \ 
     137      bool val = false;                                                    \ 
     138      ENodeType renum = Unknown;                                           \ 
     139      is.read (reinterpret_cast<char*>(&renum), sizeof(ENodeType));        \ 
     140      is.read (reinterpret_cast<char*>(&val), sizeof(bool));               \ 
     141      if (renum != C##Name_##Definition::GetType())                        \ 
     142         ERROR("CContext::fromBinary(StdIStream & is)",                    \ 
     143               << "[ renum = " << renum << "] Bad type !");                \ 
     144      if (val) CObjectFactory::CreateObject<C##Name_##Definition>          \ 
     145                  (C##Name_##Definition::GetDefName()) -> fromBinary(is);  \ 
     146   }    
     147#define DECLARE_NODE_PAR(Name_, name_) 
     148#include "node_type.conf" 
     149       
     150   } 
     151    
     152    
    111153   //---------------------------------------------------------------- 
    112154 
     
    114156   { 
    115157      StdOStringStream oss; 
    116       oss << "< " << CContext::GetName() 
     158      oss << "<" << CContext::GetName() 
    117159          << " id=\"" << this->getId() << "\" " 
    118160          << SuperClassAttribute::toString() << ">" << std::endl; 
     
    124166      { 
    125167 
    126    #define DECLARE_NODE(Name_, name_)    \ 
    127       if (CObjectFactory::HasObject<C##Name_##Definition>(C##Name_##Definition::GetDefName())) \ 
     168#define DECLARE_NODE(Name_, name_)    \ 
     169   if (CObjectFactory::HasObject<C##Name_##Definition>(C##Name_##Definition::GetDefName())) \ 
    128170   oss << *CObjectFactory::GetObject<C##Name_##Definition>(C##Name_##Definition::GetDefName()) << std::endl; 
    129    #define DECLARE_NODE_PAR(Name_, name_) 
    130    #include "node_type.conf" 
    131  
    132       } 
    133  
    134       oss << "</ " << CContext::GetName() << " >"; 
     171#define DECLARE_NODE_PAR(Name_, name_) 
     172#include "node_type.conf" 
     173 
     174      } 
     175 
     176      oss << "</" << CContext::GetName() << " >"; 
    135177 
    136178      return (oss.str()); 
     
    141183   void CContext::solveDescInheritance(const CAttributeMap * const UNUSED(parent)) 
    142184   { 
    143    #define DECLARE_NODE(Name_, name_)    \ 
    144       if (CObjectFactory::HasObject<C##Name_##Definition>(C##Name_##Definition::GetDefName())) \ 
     185#define DECLARE_NODE(Name_, name_)    \ 
     186   if (CObjectFactory::HasObject<C##Name_##Definition>(C##Name_##Definition::GetDefName())) \ 
    145187   CObjectFactory::GetObject<C##Name_##Definition>(C##Name_##Definition::GetDefName())->solveDescInheritance(); 
    146    #define DECLARE_NODE_PAR(Name_, name_) 
    147    #include "node_type.conf" 
     188#define DECLARE_NODE_PAR(Name_, name_) 
     189#include "node_type.conf" 
    148190   } 
    149191 
     
    152194   bool CContext::hasChild(void) const 
    153195   { 
    154       return (false || 
    155    #define DECLARE_NODE(Name_, name_)    \ 
    156       CObjectFactory::HasObject<C##Name_##Definition>  (C##Name_##Definition::GetDefName())   || 
    157    #define DECLARE_NODE_PAR(Name_, name_) 
    158    #include "node_type.conf" 
     196      return ( 
     197#define DECLARE_NODE(Name_, name_)    \ 
     198   CObjectFactory::HasObject<C##Name_##Definition>  (C##Name_##Definition::GetDefName())   || 
     199#define DECLARE_NODE_PAR(Name_, name_) 
     200#include "node_type.conf" 
    159201      false); 
    160    } 
     202} 
    161203 
    162204   //---------------------------------------------------------------- 
Note: See TracChangeset for help on using the changeset viewer.