Show
Ignore:
Timestamp:
10/24/07 19:30:30 (10 months ago)
Author:
cneumann
Message:

fixed: FieldBundle? templates, pointers and fields updated

lots of compile errors - some remain

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • branches/Carsten_PtrWork/Source/System/FieldContainer/Base/OSGReferenceCountPointer.inl

    r976 r988  
    5151 
    5252/*-------------------------------------------------------------------------*/ 
    53 /* InternalRefCountPolicy                                                  */ 
     53/* InternalRefCountPolicy<RootObjectT>                                     */ 
    5454/*-------------------------------------------------------------------------*/ 
    5555 
     
    5858InternalRefCountPolicy<RootObjectT>::addRef(RootObjectPtrConstArg rootObjectPtr) 
    5959{ 
    60     addInternalRef(rootObjectPtr); 
     60    rootObjectPtr->addReference(); 
    6161} 
    6262 
     
    6565InternalRefCountPolicy<RootObjectT>::subRef(RootObjectPtrConstArg rootObjectPtr) 
    6666{ 
    67     subInternalRef(rootObjectPtr); 
     67    rootObjectPtr->subReference(); 
    6868} 
    6969     
     
    7676 
    7777/*-------------------------------------------------------------------------*/ 
    78 /* RefCountPolicy                                                          */ 
     78/* RefCountPolicy<RootObjectT>                                             */ 
    7979/*-------------------------------------------------------------------------*/ 
    8080 
     
    8383RefCountPolicy<RootObjectT>::addRef(RootObjectPtrConstArg rootObjectPtr) 
    8484{ 
    85     addExternalRef(rootObjectPtr); 
     85    rootObjectPtr->addExternalReference(); 
    8686} 
    8787 
     
    9090RefCountPolicy<RootObjectT>::subRef(RootObjectPtrConstArg rootObjectPtr) 
    9191{ 
    92     subExternalRef(rootObjectPtr); 
     92    rootObjectPtr->subExternalReference(); 
    9393} 
    9494 
     
    101101 
    102102/*-------------------------------------------------------------------------*/ 
    103 /* MTRefCountPolicy<FieldContainer>                                        */ 
    104 /*-------------------------------------------------------------------------*/ 
    105  
    106 template <
    107 inline void 
    108 MTRefCountPolicy<FieldContainer>::addRef(RootObjectPtrConstArg rootObjectPtr) 
    109 { 
    110     addExternalRef(rootObjectPtr); 
    111 } 
    112      
    113 template <
    114 inline void 
    115 MTRefCountPolicy<FieldContainer>::subRef(RootObjectPtrConstArg rootObjectPtr) 
    116 { 
    117     subExternalRef(rootObjectPtr); 
    118 } 
    119      
    120 template <
    121 inline typename RefCountPolicy<FieldContainer>::RootObjectPtr 
    122 MTRefCountPolicy<FieldContainer>::deref(RootObjectPtrConstArg rootObjectPtr) 
     103/* MTRefCountPolicy<RootObjectT>                                        */ 
     104/*-------------------------------------------------------------------------*/ 
     105 
     106template <class RootObjectT
     107inline void 
     108MTRefCountPolicy<RootObjectT>::addRef(RootObjectPtrConstArg rootObjectPtr) 
     109{ 
     110    rootObjectPtr->addExternalReference(); 
     111} 
     112     
     113template <class RootObjectT
     114inline void 
     115MTRefCountPolicy<RootObjectT>::subRef(RootObjectPtrConstArg rootObjectPtr) 
     116{ 
     117    rootObjectPtr->subExternalReference(); 
     118} 
     119     
     120template <class RootObjectT
     121inline typename MTRefCountPolicy<RootObjectT>::RootObjectPtr 
     122MTRefCountPolicy<RootObjectT>::deref(RootObjectPtrConstArg rootObjectPtr) 
    123123{ 
    124124    return rootObjectPtr->getAspectPtr(Thread::getCurrentAspect()); 
     
    129129/*-------------------------------------------------------------------------*/ 
    130130 
    131 template <> 
    132131inline void 
    133132MTRefCountPolicy<FieldBundle>::addRef(RootObjectPtrConstArg rootObjectPtr) 
    134133{ 
    135     addExternalRef(rootObjectPtr); 
    136 
    137      
    138 template <> 
     134//     rootObjectPtr->addExternalReference(); 
     135
     136     
    139137inline void 
    140138MTRefCountPolicy<FieldBundle>::subRef(RootObjectPtrConstArg rootObjectPtr) 
    141139{ 
    142     subExternalRef(rootObjectPtr); 
    143 
    144      
    145 template <> 
    146 inline typename RefCountPolicy<FieldContainer>::RootObjectPtr 
     140//     rootObjectPtr->subExternalReference(); 
     141
     142     
     143inline MTRefCountPolicy<FieldBundle>::RootObjectPtr 
    147144MTRefCountPolicy<FieldBundle>::deref(RootObjectPtrConstArg rootObjectPtr) 
    148145{ 
     
    151148 
    152149/*-------------------------------------------------------------------------*/ 
    153 /* WeakRefCountPolicy                                                      */ 
     150/* WeakRefCountPolicy<RootObjectT>                                         */ 
    154151/*-------------------------------------------------------------------------*/ 
    155152 
     
    158155WeakRefCountPolicy<RootObjectT>::addRef(RootObjectPtrConstArg rootObjectPtr) 
    159156{ 
    160     addWeakRef(rootObjectPtr); 
     157    rootObjectPtr->addWeakReference(); 
    161158} 
    162159 
     
    165162WeakRefCountPolicy<RootObjectT>::subRef(RootObjectPtrConstArg rootObjectPtr) 
    166163{ 
    167     subWeakRef(rootObjectPtr); 
    168 } 
    169  
    170 template <class RootObjectT> 
    171 inline typename RefCountPolicy<RootObjectT>::RootObjectPtr 
     164    rootObjectPtr->subWeakReference(); 
     165} 
     166 
     167template <class RootObjectT> 
     168inline typename WeakRefCountPolicy<RootObjectT>::RootObjectPtr 
    172169WeakRefCountPolicy<RootObjectT>::deref(RootObjectPtrConstArg rootObjectPtr) 
    173170{ 
     
    176173 
    177174/*-------------------------------------------------------------------------*/ 
    178 /* ReferenceCountPointer<ContainerT, RefCountPolicyT>                      */ 
     175/* ReferenceCountPointer<ObjectT, RefCountPolicyT>                      */ 
    179176/*-------------------------------------------------------------------------*/ 
    180177 
     
    182179/* Internal Helpers                                                        */ 
    183180 
    184 template <class ContainerT, class RefCountPolicyT, class RootObjectT> 
     181template <class ObjectT, class RefCountPolicyT, class RootObjectT> 
    185182inline typename  
    186     ReferenceCountPointer<ContainerT,  
     183    ReferenceCountPointer<ObjectT,  
    187184                          RefCountPolicyT, 
    188185                          RootObjectT     >::RootObjectPtr 
    189 ReferenceCountPointer<ContainerT,  
     186ReferenceCountPointer<ObjectT,  
    190187                      RefCountPolicyT, 
    191188                      RootObjectT     >::castPtrUp(ObjectPtrConstArg objectPtr) 
     
    194191} 
    195192 
    196 template <class ContainerT, class RefCountPolicyT, class RootObjectT> 
     193template <class ObjectT, class RefCountPolicyT, class RootObjectT> 
    197194inline typename 
    198     ReferenceCountPointer<ContainerT,  
     195    ReferenceCountPointer<ObjectT,  
    199196                          RefCountPolicyT, 
    200197                          RootObjectT     >::ObjectPtr 
    201 ReferenceCountPointer<ContainerT,  
     198ReferenceCountPointer<ObjectT,  
    202199                      RefCountPolicyT, 
    203200                      RootObjectT     >::castPtrDown( 
    204201    RootObjectPtrConstArg rootObjectPtr) 
    205202{ 
    206     return static_cast<ContainerPtr>(static_cast<void *>(rootObjectPtr)); 
    207 } 
    208  
    209 template <class ContainerT, class RefCountPolicyT, class RootObjectT> 
    210 inline void 
    211 ReferenceCountPointer<ContainerT,  
     203    return static_cast<ObjectPtr>(static_cast<void *>(rootObjectPtr)); 
     204} 
     205 
     206template <class ObjectT, class RefCountPolicyT, class RootObjectT> 
     207inline void 
     208ReferenceCountPointer<ObjectT,  
    212209                      RefCountPolicyT, 
    213210                      RootObjectT     >::internalSet( 
     
    223220/* Constructors                                                            */ 
    224221 
    225 template <class ContainerT, class RefCountPolicyT, class RootObjectT> 
     222template <class ObjectT, class RefCountPolicyT, class RootObjectT> 
    226223inline 
    227 ReferenceCountPointer<ContainerT,  
     224ReferenceCountPointer<ObjectT,  
    228225                      RefCountPolicyT, 
    229226                      RootObjectT     >::ReferenceCountPointer(void) 
     
    232229} 
    233230 
    234 template <class ContainerT, class RefCountPolicyT, class RootObjectT> 
     231template <class ObjectT, class RefCountPolicyT, class RootObjectT> 
    235232inline 
    236 ReferenceCountPointer<ContainerT,  
     233ReferenceCountPointer<ObjectT,  
    237234                      RefCountPolicyT, 
    238235                      RootObjectT     >::ReferenceCountPointer( 
     
    243240} 
    244241     
    245 template <class ContainerT, class RefCountPolicyT, class RootObjectT> 
     242template <class ObjectT, class RefCountPolicyT, class RootObjectT> 
    246243inline 
    247 ReferenceCountPointer<ContainerT,  
     244ReferenceCountPointer<ObjectT,  
    248245                      RefCountPolicyT, 
    249246                      RootObjectT     >::ReferenceCountPointer( 
     
    254251} 
    255252 
    256 template <class ContainerT,      class RefCountPolicyT,     class RootObjectT> 
    257 template <class OtherContainerT, class OtherRefCountPolicyT                  > 
     253template <class ObjectT,      class RefCountPolicyT,     class RootObjectT> 
     254template <class OtherObjectT, class OtherRefCountPolicyT                  > 
    258255inline 
    259 ReferenceCountPointer<ContainerT,  
     256ReferenceCountPointer<ObjectT,  
    260257                      RefCountPolicyT, 
    261258                      RootObjectT     >::ReferenceCountPointer( 
    262     ReferenceCountPointer<OtherContainerT, 
     259    ReferenceCountPointer<OtherObjectT, 
    263260                          OtherRefCountPolicyT, 
    264261                          RootObjectT          > const &refPtr) 
    265     : _pContainer(NullFC) 
    266 { 
    267 // //     This requires ContainerT and OtherContainerT to be a complete types 
     262    : _rootObjectPtr(NullFC) 
     263{ 
     264// //     This requires ObjectT and OtherObjectT to be a complete types 
    268265//     BOOST_STATIC_ASSERT(( 
    269266//         boost::is_convertible< 
    270267//             typename ReferenceCountPointer< 
    271 //                 OtherContainerT, 
     268//                 OtherObjectT, 
    272269//                 OtherRefCountPolicyT>::ContainerPtr, 
    273270//             ContainerPtr                            >::value)); 
    274271 
    275     internalSet(Self::castPtrUp(refPtr.get()); 
     272    internalSet(Self::castPtrUp(refPtr.get())); 
     273
     274 
     275template <class ObjectT,      class RefCountPolicyT,     class RootObjectT> 
     276template <class OtherObjectT, class OtherRefCountPolicyT                  > 
     277inline  
     278ReferenceCountPointer<ObjectT,  
     279                      RefCountPolicyT, 
     280                      RootObjectT     >::ReferenceCountPointer( 
     281    ReferenceCountPointer<OtherObjectT, 
     282                          OtherRefCountPolicyT, 
     283                          RootObject           > const &refPtr, 
     284    detail::StaticCastTag                                      ) 
     285     
     286    : _rootObjectPtr(NullFC) 
     287
     288    internalSet(Self::castPtrUp(static_cast<ObjectPtr>(refPtr.get()))); 
     289
     290         
     291template <class ObjectT,      class RefCountPolicyT,     class RootObjectT> 
     292template <class OtherObjectT, class OtherRefCountPolicyT                  > 
     293inline  
     294ReferenceCountPointer<ObjectT,  
     295                      RefCountPolicyT, 
     296                      RootObjectT     >::ReferenceCountPointer( 
     297    ReferenceCountPointer<OtherObjectT, 
     298                          OtherRefCountPolicyT, 
     299                          RootObject           > const &refPtr, 
     300    detail::ConstCastTag                                       ) 
     301     
     302    : _rootObjectPtr(NullFC) 
     303
     304    internalSet(Self::castPtrUp(const_cast<ObjectPtr>(refPtr.get()))); 
     305
     306     
     307template <class ObjectT,      class RefCountPolicyT,     class RootObjectT> 
     308template <class OtherObjectT, class OtherRefCountPolicyT                  > 
     309inline  
     310ReferenceCountPointer<ObjectT,  
     311                      RefCountPolicyT, 
     312                      RootObjectT     >::ReferenceCountPointer( 
     313    ReferenceCountPointer<OtherObjectT, 
     314                          OtherRefCountPolicyT, 
     315                          RootObject           > const &refPtr, 
     316    detail::DynamicCastTag                                     ) 
     317     
     318    : _rootObjectPtr(NullFC) 
     319
     320    internalSet(Self::castPtrUp(dynamic_cast<ObjectPtr>(refPtr.get()))); 
    276321} 
    277322 
     
    279324/* Destructor                                                              */ 
    280325 
    281 template <class ContainerT, class RefCountPolicyT, class RootObjectT> 
     326template <class ObjectT, class RefCountPolicyT, class RootObjectT> 
    282327inline 
    283 ReferenceCountPointer<ContainerT,  
     328ReferenceCountPointer<ObjectT,  
    284329                      RefCountPolicyT, 
    285330                      RootObjectT     >::~ReferenceCountPointer(void) 
     
    291336/* Assignment                                                              */ 
    292337 
    293 template <class ContainerT, class RefCountPolicyT, class RootObjectT> 
    294 inline typename ReferenceCountContainer<ContainerT, RefCountPolicyT>::Self & 
    295 ReferenceCountPointer<ContainerT,  
    296                       RefCountPolicyT, 
    297                       RootObjectT     >::operator=(Self const &other) 
    298 
    299     internalSet(other._rootObjectPtr); 
    300      
    301     return *this; 
    302 
    303  
    304 template <class ContainerT, class RefCountPolicyT, class RootObjectT> 
     338template <class ObjectT, class RefCountPolicyT, class RootObjectT> 
    305339inline typename  
    306     ReferenceCountPointer<ContainerT,  
     340    ReferenceCountPointer<ObjectT, 
    307341                          RefCountPolicyT, 
    308342                          RootObjectT     >::Self & 
    309 ReferenceCountPointer<ContainerT,  
     343ReferenceCountPointer<ObjectT,  
     344                      RefCountPolicyT, 
     345                      RootObjectT     >::operator=(Self const &other) 
     346
     347    internalSet(other._rootObjectPtr); 
     348     
     349    return *this; 
     350
     351 
     352template <class ObjectT, class RefCountPolicyT, class RootObjectT> 
     353inline typename  
     354    ReferenceCountPointer<ObjectT,  
     355                          RefCountPolicyT, 
     356                          RootObjectT     >::Self & 
     357ReferenceCountPointer<ObjectT,  
    310358                      RefCountPolicyT, 
    311359                      RootObjectT     >::operator=( 
     
    317365} 
    318366 
    319 template <class ContainerT,      class RefCountPolicyT,     class RootObjectT> 
    320 template <class OtherContainerT, class OtherRefCountPolicyT                  > 
     367template <class ObjectT,      class RefCountPolicyT,     class RootObjectT> 
     368template <class OtherObjectT, class OtherRefCountPolicyT                  > 
    321369inline typename  
    322     ReferenceCountPointer<ContainerT,  
     370    ReferenceCountPointer<ObjectT,  
    323371                          RefCountPolicyT, 
    324                           RootObjectT     > 
    325 ReferenceCountPointer<ContainerT,  
     372                          RootObjectT     >::Self & 
     373ReferenceCountPointer<ObjectT,  
    326374                      RefCountPolicyT, 
    327375                      RootObjectT     >::operator=( 
    328     ReferenceCountPointer<OtherContainerT, 
    329                           OtherRefCountPolicy
    330                           RootObjectT         > const &refPtr) 
    331 { 
    332 // //     This requires ContainerT and OtherContainerT to be a complete types 
     376    ReferenceCountPointer<OtherObjectT, 
     377                          OtherRefCountPolicyT
     378                          RootObjectT          > const &refPtr) 
     379{ 
     380// //     This requires ObjectT and OtherObjectT to be a complete types 
    333381//     BOOST_STATIC_ASSERT(( 
    334382//         boost::is_convertible< 
    335383//             typename ReferenceCountPointer< 
    336 //                 OtherContainerT, 
     384//                 OtherObjectT, 
    337385//                 OtherRefCountPolicyT>::ContainerPtr, 
    338386//             ContainerPtr                            >::value)); 
     
    346394/* Conversion                                                              */ 
    347395 
    348 template <class ContainerT, class RefCountPolicyT, class RootObjectT> 
     396template <class ObjectT, class RefCountPolicyT, class RootObjectT> 
    349397inline 
    350 ReferenceCountPointer<ContainerT,  
     398ReferenceCountPointer<ObjectT,  
    351399                      RefCountPolicyT, 
    352400                      RootObjectT     >::operator ObjectPtr(void) const 
     
    358406/* Access                                                                  */ 
    359407 
    360 template <class ContainerT, class RefCountPolicyT, class RootObjectT> 
     408template <class ObjectT, class RefCountPolicyT, class RootObjectT> 
    361409inline typename 
    362     ReferenceCountPointer<ContainerT,  
     410    ReferenceCountPointer<ObjectT,  
    363411                      RefCountPolicyT, 
    364412                      RootObjectT     >::ObjectPtr 
    365 ReferenceCountPointer<ContainerT,  
     413ReferenceCountPointer<ObjectT,  
    366414                      RefCountPolicyT, 
    367415                      RootObjectT     >::operator->(void) const 
     
    370418} 
    371419 
    372 template <class ContainerT, class RefCountPolicyT, class RootObjectT> 
     420template <class ObjectT, class RefCountPolicyT, class RootObjectT> 
    373421inline typename  
    374     ReferenceCountPointer<ContainerT,  
     422    ReferenceCountPointer<ObjectT,  
    375423                      RefCountPolicyT, 
    376424                      RootObjectT     >::Object & 
    377 ReferenceCountPointer<ContainerT,  
     425ReferenceCountPointer<ObjectT,  
    378426                      RefCountPolicyT, 
    379427                      RootObjectT     >::operator*(void) const 
     
    382430} 
    383431 
    384 template <class ContainerT, class RefCountPolicyT, class RootObjectT> 
     432template <class ObjectT, class RefCountPolicyT, class RootObjectT> 
    385433inline typename 
    386     ReferenceCountPointer<ContainerT,  
     434    ReferenceCountPointer<ObjectT,  
    387435                      RefCountPolicyT, 
    388436                      RootObjectT     >::ObjectPtr 
    389 ReferenceCountPointer<ContainerT,  
     437ReferenceCountPointer<ObjectT,  
    390438                      RefCountPolicyT, 
    391439                      RootObjectT     >::get(void) const 
     
    394442} 
    395443 
    396 template <class ContainerT, class RefCountPolicyT, class RootObjectT> 
    397 inline void 
    398 ReferenceCountPointer<ContainerT,  
     444template <class ObjectT, class RefCountPolicyT, class RootObjectT> 
     445inline void 
     446ReferenceCountPointer<ObjectT,  
    399447                      RefCountPolicyT, 
    400448                      RootObjectT     >::set( 
    401449    ObjectPtrConstArg objectPtr) 
    402450{ 
    403     _objectPtr = Self::castPtrUp(objectPtr); 
    404 } 
    405  
    406 template <class ContainerT, class RefCountPolicyT, class RootObjectT> 
    407 inline void 
    408 ReferenceCountPointer<ContainerT,  
     451    _rootObjectPtr = Self::castPtrUp(objectPtr); 
     452} 
     453 
     454template <class ObjectT, class RefCountPolicyT, class RootObjectT> 
     455inline void 
     456ReferenceCountPointer<ObjectT,  
    409457                      RefCountPolicyT, 
    410458                      RootObjectT     >::swap(Self &other) 
     
    416464/* Comparison                                                              */ 
    417465 
    418 template <class ContainerT, class RefCountPolicyT, class RootObjectT> 
     466template <class ObjectT, class RefCountPolicyT, class RootObjectT> 
    419467inline bool 
    420 operator!(ReferenceCountPointer<ContainerT,  
     468operator!(ReferenceCountPointer<ObjectT,  
    421469                                RefCountPolicyT, 
    422470                                RootObjectT     > const &refPtr) 
     
    425473} 
    426474 
    427 template <class LHSContainerT, class LHSRefCountPolicyT, 
    428           class RHSContainerT, class RHSRefCountPolicyT, 
     475template <class LHSObjectT, class LHSRefCountPolicyT, 
     476          class RHSObjectT, class RHSRefCountPolicyT, 
    429477          class RootObjectT                             > 
    430478inline bool 
    431 operator==(ReferenceCountPointer<LHSContainerT,  
     479operator==(ReferenceCountPointer<LHSObjectT,  
    432480                                 LHSRefCountPolicyT, 
    433481                                 RootObjectT        > const &lhs, 
    434            ReferenceCountPointer<RHSContainerT, 
     482           ReferenceCountPointer<RHSObjectT, 
    435483                                 RHSRefCountPolicyT, 
    436484                                 RootObjectT        > const &rhs) 
     
    439487} 
    440488 
    441 template <class LHSContainerT, class LHSRefCountPolicyT, 
    442           class RHSContainerT, class RHSRefCountPolicyT, 
     489template <class LHSObjectT, class LHSRefCountPolicyT, 
     490          class RHSObjectT, class RHSRefCountPolicyT, 
    443491          class RootObjectT                             > 
    444492inline bool 
    445 operator!=(ReferenceCountPointer<LHSContainerT, 
     493operator!=(ReferenceCountPointer<LHSObjectT, 
    446494                                 LHSRefCountPolicyT, 
    447495                                 RootObjectT        > const &lhs, 
    448            ReferenceCountPointer<RHSContainerT, 
     496           ReferenceCountPointer<RHSObjectT, 
    449497                                 RHSRefCountPolicyT, 
    450498                                 RootObjectT        > const &rhs) 
     
    453501} 
    454502 
    455 template <class LHSContainerT, class LHSRefCountPolicyT, 
    456           class RHSContainerT, class RHSRefCountPolicyT, 
     503template <class LHSObjectT, class LHSRefCountPolicyT, 
     504          class RHSObjectT, class RHSRefCountPolicyT, 
    457505          class RootObjectT                             > 
    458506inline bool 
    459 operator<(ReferenceCountPointer<LHSContainerT, 
     507operator<(ReferenceCountPointer<LHSObjectT, 
    460508                                LHSRefCountPolicyT, 
    461                                 RootObject         > const &lhs, 
    462           ReferenceCountPointer<RHSContainerT, 
     509                                RootObjectT        > const &lhs, 
     510          ReferenceCountPointer<RHSObjectT, 
    463511                                RHSRefCountPolicyT, 
    464512                                RootObjectT        > const &rhs) 
    465513{ 
    466     return std::less(static_cast<void *>(lhs.get()),  
    467                      static_cast<void *>(rhs.get()) ); 
     514    return std::less<void *>()(static_cast<void *>(lhs.get()),  
     515                               static_cast<void *>(rhs.get()) ); 
    468516} 
    469517 
    470518OSG_END_NAMESPACE 
     519 
     520namespace boost 
     521{ 
     522 
     523template <class TargetObjectT,   class SourceObjectT, 
     524          class RefCountPolicyT, class RootObjectT   > 
     525inline OSG::ReferenceCountPointer<TargetObjectT, RefCountPolicyT, RootObjectT> 
     526static_pointer_cast(OSG::ReferenceCountPointer<SourceObjectT, 
     527                                               RefCountPolicyT, 
     528                                               RootObjectT     > const &source) 
     529{ 
     530    return OSG::ReferenceCountPointer<TargetObjectT, 
     531                                      RefCountPolicyT, 
     532                                      RootObjectT     >( 
     533        source.get(), OSG::detail::StaticCastTag()); 
     534} 
     535 
     536template <class TargetObjectT,   class SourceObjectT, 
     537          class RefCountPolicyT, class RootObjectT   > 
     538inline OSG::ReferenceCountPointer<TargetObjectT, RefCountPolicyT, RootObjectT> 
     539const_pointer_cast(OSG::ReferenceCountPointer<SourceObjectT, 
     540                                               RefCountPolicyT, 
     541                                               RootObjectT     > const &source) 
     542{ 
     543    return OSG::ReferenceCountPointer<TargetObjectT, 
     544                                      RefCountPolicyT, 
     545                                      RootObjectT     >( 
     546        source.get(), OSG::detail::ConstCastTag()); 
     547} 
     548 
     549template <class TargetObjectT,   class SourceObjectT, 
     550          class RefCountPolicyT, class RootObjectT   > 
     551inline OSG::ReferenceCountPointer<TargetObjectT, RefCountPolicyT, RootObjectT> 
     552dynamic_pointer_cast(OSG::ReferenceCountPointer<SourceObjectT, 
     553                                                RefCountPolicyT, 
     554                                                RootObjectT     > const &source) 
     555{ 
     556    return OSG::ReferenceCountPointer<TargetObjectT, 
     557                                      RefCountPolicyT, 
     558                                      RootObjectT     >( 
     559        source.get(), OSG::detail::DynamicCastTag()); 
     560} 
     561           
     562} // namespace boost