Show
Ignore:
Timestamp:
01/16/08 16:07:40 (1 year ago)
Author:
cneumann
Message:

changed: - factory functions return a TransitPtr? that can not be implicitly

converted to C Ptr. Should help with porting.

added: - GlobalRefPtr?, needed for cases where upon return from main

a RefPtr? goes out of scope (it would attempt to access the
FCFactory which is already shutdown at that point).

status: - vrml loader does not compile (needs porting to ref ptr)

  • tutorials compile, run and exit cleanly
  • multithreading and cluster are untested, yet
Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • branches/Carsten_PtrWork2/Source/System/FieldContainer/Node/OSGNode.inl

    r1036 r1039  
    202202} 
    203203 
    204 template <class CoreT> inline 
    205 NodeRefPtr makeCoredNode(typename CoreT::ObjPtr *pCore) 
     204template <class CoreT> 
     205inline NodeTransitPtr 
     206    makeCoredNode(typename CoreT::ObjPtr *coreP) 
    206207{ 
    207208             NodeRefPtr       n = Node::create(); 
     
    210211    n->setCore(c); 
    211212 
    212     if(pCore != NULL) 
    213         *pCore = c; 
    214  
    215     return n; 
    216 
    217  
    218 template <class CoreT> 
    219 inline NodeRefPtr 
    220 makeCoredNode(typename CoreT::ObjRefPtr *pCore) 
    221 
    222              NodeRefPtr       n = Node ::create(); 
    223     typename CoreT::ObjRefPtr c = CoreT::create(); 
    224  
    225     n->setCore(c); 
    226  
    227     if(pCore != NULL) 
    228         *pCore = c; 
    229  
    230     return n; 
    231 
    232  
    233 template <class CoreT> 
    234 inline NodeRefPtr 
    235 makeCoredNode(typename CoreT::ObjMTRefPtr *pCore) 
    236 
    237              NodeRefPtr       n = Node ::create(); 
    238     typename CoreT::ObjRefPtr c = CoreT::create(); 
    239  
    240     n->setCore(c); 
    241  
    242     if(pCore != NULL) 
    243         *pCore = c; 
    244  
    245     return n; 
    246 
    247  
    248 template <class CorePtr> inline 
    249 NodeRefPtr makeNodeFor(CorePtr c) 
     213    if(coreP != NULL) 
     214        *coreP = c; 
     215 
     216    return NodeTransitPtr(n); 
     217
     218 
     219template <class CoreT> 
     220inline NodeTransitPtr 
     221    makeCoredNode(typename CoreT::ObjRefPtr *coreP) 
     222
     223             NodeRefPtr       n = Node ::create(); 
     224    typename CoreT::ObjRefPtr c = CoreT::create(); 
     225 
     226    n->setCore(c); 
     227 
     228    if(coreP != NULL) 
     229        *coreP = c; 
     230 
     231    return NodeTransitPtr(n); 
     232
     233 
     234template <class CoreT> 
     235inline NodeTransitPtr 
     236    makeCoredNode(typename CoreT::ObjGlobalRefPtr *coreP) 
     237
     238             NodeRefPtr       n = Node ::create(); 
     239    typename CoreT::ObjRefPtr c = CoreT::create(); 
     240     
     241    n->setCore(c); 
     242     
     243    if(coreP != NULL) 
     244        *coreP = c; 
     245         
     246    return NodeTransitPtr(n); 
     247
     248 
     249template <class CoreT> 
     250inline NodeTransitPtr 
     251makeCoredNode(typename CoreT::ObjMTRefPtr *coreP) 
     252
     253             NodeRefPtr       n = Node ::create(); 
     254    typename CoreT::ObjRefPtr c = CoreT::create(); 
     255 
     256    n->setCore(c); 
     257 
     258    if(coreP != NULL) 
     259        *coreP = c; 
     260 
     261    return NodeTransitPtr(n); 
     262
     263 
     264template <class CoreT> 
     265inline NodeTransitPtr 
     266    makeCoredNode(typename CoreT::ObjGlobalMTRefPtr *coreP) 
     267
     268             NodeRefPtr       n = Node ::create(); 
     269    typename CoreT::ObjRefPtr c = CoreT::create(); 
     270     
     271    n->setCore(c); 
     272     
     273    if(coreP != NULL) 
     274        *coreP = c; 
     275         
     276    return NodeTransitPtr(n); 
     277
     278 
     279template <class CorePtr> 
     280inline NodeTransitPtr 
     281    makeNodeFor(CorePtr c) 
    250282{ 
    251283    NodeRefPtr n = Node::create(); 
     
    253285    n->setCore(c); 
    254286 
    255     return n
     287    return NodeTransitPtr(n)
    256288} 
    257289