Changeset 1155

Show
Ignore:
Timestamp:
04/14/08 08:17:49 (1 month ago)
Author:
vossg
Message:

changed: merged child handling

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/Source/System/FieldContainer/Base/OSGAttachmentContainer.cpp

    r1151 r1155  
    246246    pAttachment->addReferenceX(); 
    247247 
    248     pAttachment->addParent(this); 
     248    pAttachment->linkParent(this,  
     249                            AttachmentsFieldId,  
     250                            FieldContainerAttachment::ParentsFieldId); 
    249251 
    250252    Self::editSField(AttachmentsFieldMask); 
     
    254256    if(fcI != _sfAttachments.getValue().end()) 
    255257    { 
    256         (*fcI).second->subParent(this); 
     258        (*fcI).second->unlinkParent(this,  
     259                                    FieldContainerAttachment::ParentsFieldId); 
    257260 
    258261        (*fcI).second->subReferenceX(); 
     
    296299    if(fcI != _sfAttachments.getValue().end()) 
    297300    { 
    298         (*fcI).second->subParent(this); 
     301        (*fcI).second->unlinkParent(this,  
     302                                    FieldContainerAttachment::ParentsFieldId); 
    299303 
    300304        (*fcI).second->subReferenceX(); 
     
    355359    while(fcI != fcE) 
    356360    { 
    357         (*fcI).second->subParent(this); 
     361        (*fcI).second->unlinkParent(this,  
     362                                    FieldContainerAttachment::ParentsFieldId); 
    358363 
    359364        (*fcI).second->subReferenceX(); 
  • trunk/Source/System/FieldContainer/Base/OSGFieldContainer.cpp

    r1106 r1155  
    118118} 
    119119 
    120 void FieldContainer::subChildPointer(FieldContainerPtr pObj, 
    121                                      UInt16            usFieldPos) 
    122 
    123     OSG_ASSERT(false); 
     120bool FieldContainer::linkParent(const FieldContainerPtr pParent, 
     121                                const UInt16            childFieldId, 
     122                                const UInt16            parentFieldId)  
     123
     124    return false; 
     125
     126 
     127bool FieldContainer::unlinkParent(const FieldContainerPtr pParent, 
     128                                  const UInt16            parentFieldId)  
     129
     130    return false; 
     131
     132             
     133bool FieldContainer::unlinkChild(const FieldContainerPtr pChild, 
     134                                 const UInt16            childFieldId)  
     135
     136    return false; 
    124137} 
    125138 
  • trunk/Source/System/FieldContainer/Base/OSGFieldContainer.h

    r1140 r1155  
    248248    /*! \{                                                                 */ 
    249249 
    250     OSG_SYSTEM_DLLMAPPING 
    251     virtual void subChildPointer(FieldContainerPtr pObj, 
    252                                  UInt16            usFieldPos); 
    253 #ifndef OSG_DELETE_LATER 
    254250    /*! \}                                                                 */ 
    255251    /*---------------------------------------------------------------------*/ 
     
    258254 
    259255    OSG_SYSTEM_DLLMAPPING 
    260     virtual bool linkParent  (FieldContainerPtrConst pParent, 
    261                               UInt16 const           childFieldId, 
    262                               UInt16 const           parentFieldId)  
    263         {return false;} 
    264  
    265     OSG_SYSTEM_DLLMAPPING 
    266     virtual bool unlinkParent(FieldContainerPtrConst pParent, 
    267                               UInt16 const           parentFieldId)  
    268         {return false;} 
     256    virtual bool linkParent  (const FieldContainerPtr pParent, 
     257                              const UInt16            childFieldId, 
     258                              const UInt16            parentFieldId); 
     259 
     260    OSG_SYSTEM_DLLMAPPING 
     261    virtual bool unlinkParent(const FieldContainerPtr pParent, 
     262                              const UInt16            parentFieldId); 
    269263             
    270264    OSG_SYSTEM_DLLMAPPING 
    271     virtual bool unlinkChild (FieldContainerPtrConst pChild, 
    272                               UInt16 const           childFieldId )  
    273         {return false;} 
     265    virtual bool unlinkChild (const FieldContainerPtrConst pChild, 
     266                              const UInt16                 childFieldId); 
    274267     
    275 #endif 
    276268    /*! \}                                                                 */ 
    277269    /*---------------------------------------------------------------------*/ 
  • trunk/Source/System/FieldContainer/Base/OSGFieldContainerAttachment.cpp

    r1091 r1155  
    131131OSG_ABSTR_FIELD_CONTAINER_DEF(FieldContainerAttachment) 
    132132 
     133 
     134bool FieldContainerAttachment::linkParent  ( 
     135    const FieldContainerPtr pParent, 
     136    const UInt16            childFieldId, 
     137    const UInt16            parentFieldId) 
     138{ 
     139    if(parentFieldId == ParentsFieldId) 
     140    { 
     141        FieldContainerPtr pTypedParent = 
     142             dynamic_cast<FieldContainerPtr>(pParent); 
     143         
     144        if(pTypedParent != NullFC) 
     145        { 
     146            editMField(ParentsFieldMask, _mfParents); 
     147 
     148            _mfParents.push_back(pParent, childFieldId); 
     149             
     150            return true; 
     151        } 
     152     
     153        return false; 
     154    } 
     155     
     156    return Inherited::linkParent(pParent, childFieldId, parentFieldId); 
     157} 
     158 
     159bool FieldContainerAttachment::unlinkParent( 
     160    const FieldContainerPtr pParent, 
     161    const UInt16            parentFieldId) 
     162{ 
     163    if(parentFieldId == ParentsFieldId) 
     164    { 
     165        FieldContainerPtr pTypedParent = 
     166            dynamic_cast<FieldContainerPtr>(pParent); 
     167             
     168        if(pTypedParent != NullFC) 
     169        { 
     170            MFParentFieldContainerPtr::iterator pIt =  
     171                _mfParents.find_nc(pParent); 
     172                 
     173            if(pIt != _mfParents.end()) 
     174            { 
     175                editMField(ParentsFieldMask, _mfParents); 
     176                 
     177                _mfParents.erase(pIt); 
     178                 
     179                return true; 
     180            } 
     181              
     182            FWARNING(("FieldContainerAttachment::unlinkParent: " 
     183                      "Child <-> Parent link inconsistent.\n")); 
     184             
     185            return false; 
     186        } 
     187 
     188        return false; 
     189    } 
     190         
     191    return Inherited::unlinkParent(pParent, parentFieldId); 
     192} 
     193  
     194 
    133195/*-------------------------------------------------------------------------*/ 
    134196/*                             Assignment                                  */ 
  • trunk/Source/System/FieldContainer/Base/OSGFieldContainerAttachment.h

    r1092 r1155  
    4949OSG_BEGIN_NAMESPACE 
    5050 
     51class AttachmentContainer; 
     52 
    5153//! Brief 
    5254//! \ingroup baselib 
     
    116118    /*! \name                   your_category                              */ 
    117119    /*! \{                                                                 */ 
    118  
    119     void addParent(      FieldContainerPtrConst parent,  
    120                    const UInt16                 uiStoredInFieldId =  
    121                                                             InvalidParentEPos); 
    122  
    123     void subParent(FieldContainerPtrConst       parent                       ); 
    124120 
    125121    /*! \}                                                                 */ 
     
    200196 
    201197    virtual ~FieldContainerAttachment(void); 
     198 
     199    /*! \}                                                                 */ 
     200    /*---------------------------------------------------------------------*/ 
     201    /*! \name                       Sync                                   */ 
     202    /*! \{                                                                 */ 
     203 
     204    virtual bool linkParent  (const FieldContainerPtr pParent, 
     205                              const UInt16            childFieldId, 
     206                              const UInt16            parentFieldId); 
     207 
     208    virtual bool unlinkParent(const FieldContainerPtr pParent, 
     209                              const UInt16            parentFieldId); 
    202210 
    203211    /*! \}                                                                 */ 
     
    244252  private: 
    245253 
     254    friend class AttachmentContainer; 
     255 
    246256    /*!\brief prohibit default function (move to 'public' if needed) */ 
    247257    void operator =(const FieldContainerAttachment &source); 
  • trunk/Source/System/FieldContainer/Base/OSGFieldContainerAttachment.inl

    r1091 r1155  
    9292 
    9393inline 
    94 void FieldContainerAttachment::addParent( 
    95           FieldContainerPtrConst parent, 
    96     const UInt16                 uiStoredInFieldId) 
    97 { 
    98     Inherited::editMField(ParentsFieldMask, _mfParents); 
    99  
    100     _mfParents.push_back(parent, uiStoredInFieldId); 
    101 //    _mfParents.back().setParentFieldPos(uiStoredInFieldId); 
    102 } 
    103  
    104 inline 
    105 void FieldContainerAttachment::subParent(FieldContainerPtrConst parent) 
    106 { 
    107     Int32 iParentIdx = _mfParents.findIndex(parent); 
    108  
    109     if(iParentIdx != -1) 
    110     { 
    111         Inherited::editMField(ParentsFieldMask, _mfParents); 
    112  
    113 #if 0 
    114         MFParentFieldContainerPtr::iterator parentIt = _mfParents.begin(); 
    115  
    116         parentIt += iParentIdx; 
    117  
    118         _mfParents.erase(parentIt); 
    119 #endif 
    120         _mfParents.erase(iParentIdx); 
    121  
    122     } 
    123 } 
    124  
    125 inline 
    12694FieldContainerPtr FieldContainerAttachment::getParent(UInt32 uiIdx) const 
    12795{ 
  • trunk/Source/System/FieldContainer/Fields/PointerFields/OSGChildAccessHandler.inl

    r1148 r1155  
    109109                   dcastSField(pSField)->getChildFieldId   (), 
    110110                   pObj, 
    111                    dcastSField(pSField)->getParentFieldPos () ); 
     111                   dcastSField(pSField)->getParentFieldId () ); 
    112112    } 
    113113} 
     
    125125                   dcastMField(pMField)->getChildFieldId   (), 
    126126                   pObj, 
    127                    dcastMField(pMField)->getParentFieldPos () ); 
     127                   dcastMField(pMField)->getParentFieldId () ); 
    128128    } 
    129129} 
     
    138138        unlinkParent(dcastSField(pSField)->getEnclosingObject(), 
    139139                     pObj, 
    140                      dcastSField(pSField)->getParentFieldPos() ); 
     140                     dcastSField(pSField)->getParentFieldId  () ); 
    141141 
    142142        RefCountPolicyType::subRef(pObj/*, false*/); 
     
    153153        unlinkParent(dcastMField(pMField)->getEnclosingObject(), 
    154154                     pObj, 
    155                      dcastMField(pMField)->getParentFieldPos() ); 
     155                     dcastMField(pMField)->getParentFieldId  () ); 
    156156 
    157157        RefCountPolicyType::subRef(pObj/*, false*/); 
     
    171171        unlinkParent(dcastSField(pSField)->getEnclosingObject(), 
    172172                     pOldObj, 
    173                      dcastSField(pSField)->getParentFieldPos()); 
     173                     dcastSField(pSField)->getParentFieldId  ()); 
    174174 
    175175        RefCountPolicyType::subRef(pOldObj/*, false*/); 
     
    181181                   dcastSField(pSField)->getChildFieldId   (), 
    182182                   pNewObj, 
    183                    dcastSField(pSField)->getParentFieldPos ()); 
     183                   dcastSField(pSField)->getParentFieldId ()); 
    184184    } 
    185185} 
     
    197197        unlinkParent(dcastMField(pMField)->getEnclosingObject(), 
    198198                     pOldObj, 
    199                      dcastMField(pMField)->getParentFieldPos() ); 
     199                     dcastMField(pMField)->getParentFieldId() ); 
    200200 
    201201        RefCountPolicyType::subRef(pOldObj/*, false*/); 
     
    207207                   dcastMField(pMField)->getChildFieldId   (), 
    208208                   pNewObj, 
    209                    dcastMField(pMField)->getParentFieldPos ()); 
     209                   dcastMField(pMField)->getParentFieldId ()); 
    210210    } 
    211211} 
  • trunk/Source/System/FieldContainer/Fields/PointerFields/OSGChildPointerMField.h

    r1154 r1155  
    507507    /*! \{                                                                 */ 
    508508 
    509     ChildPointerMField(FieldContainerPtr pParent, 
    510                        UInt16            usParentFieldPos); 
     509    ChildPointerMField(const FieldContainerPtr pParent, 
     510                             UInt16            usChildFieldId, 
     511                             UInt16            usParentFieldId); 
    511512     
    512513 
     
    552553    reference front_nc(void             ); 
    553554    reference back_nc (void             ); 
     555#endif 
    554556 
    555557    iterator  find_nc (const_value value); 
    556 #endif 
    557558 
    558559    /*! \}                                                                 */ 
  • trunk/Source/System/FieldContainer/Fields/PointerFields/OSGChildPointerMField.inl

    r1154 r1155  
    712712                   RefCountPolicy,  
    713713                   NamespaceI  >::ChildPointerMField( 
    714                        FieldContainerPtr pParent, 
    715                        UInt16            usParentFieldPos) :  
    716     Inherited(pParent, usParentFieldPos) 
     714                       const FieldContainerPtr pParent, 
     715                             UInt16            usChildFieldId, 
     716                             UInt16            usParentFieldId) :  
     717    Inherited(pParent, usChildFieldId, usParentFieldId) 
    717718{ 
    718719} 
     
    766767    reference front_nc(void             ); 
    767768    reference back_nc (void             ); 
    768  
    769     iterator  find_nc (const_value value); 
    770769#endif 
     770 
     771template <class ObjectTypeT, typename RefCountPolicy, Int32 NamespaceI> inline  
     772typename ChildPointerMField<ObjectTypeT, 
     773                            RefCountPolicy,  
     774                            NamespaceI    >::iterator 
     775    ChildPointerMField<ObjectTypeT, 
     776                       RefCountPolicy,  
     777                       NamespaceI    >::find_nc(const_value value) 
     778{ 
     779    return iterator(this->ptrStoreFind(value), this); 
     780} 
    771781 
    772782#ifndef OSG_CLEAN_FCFIELDS 
     
    10431053{ 
    10441054    this->ptrStoreAssign(first, last); 
     1055} 
     1056 
     1057 
     1058template <class ObjectTypeT, typename RefCountPolicy, Int32 NamespaceI> inline  
     1059void ChildPointerMField<ObjectTypeT, 
     1060                        RefCountPolicy, 
     1061                        NamespaceI    >::replace(UInt32      uiIdx,  
     1062                                                 const_value value) 
     1063{ 
     1064    this->ptrStoreReplace(uiIdx, value); 
     1065} 
     1066 
     1067template <class ObjectTypeT, typename RefCountPolicy, Int32 NamespaceI> inline  
     1068void ChildPointerMField<ObjectTypeT, 
     1069                        RefCountPolicy, 
     1070                        NamespaceI    >::replace(iterator    pos,  
     1071                                                 const_value value) 
     1072{ 
     1073    this->ptrStoreReplace(pos.base(), value); 
    10451074} 
    10461075 
  • trunk/Source/System/FieldContainer/Fields/PointerFields/OSGChildPointerMFieldBase.h

    r1152 r1155  
    5151     
    5252    ChildPointerMFieldBase(const FieldContainerPtr  pParent, 
    53                                  UInt16             usParentFieldPos); 
     53                                 UInt16             usChildFieldId, 
     54                                 UInt16             usParentFieldId); 
    5455     
    5556    /*! \}                                                                 */ 
     
    7172    void              setChildFieldId   (const UInt16 childFieldId   ); 
    7273     
    73     UInt16            getParentFieldPos (      void                  ) const; 
     74    UInt16            getParentFieldId (      void                  ) const; 
    7475    void              setParentFieldId  (const UInt16 parentFieldId  ); 
    7576     
  • trunk/Source/System/FieldContainer/Fields/PointerFields/OSGChildPointerMFieldBase.inl

    r1152 r1155  
    1616                       NamespaceI    >::ChildPointerMFieldBase( 
    1717                           const FieldContainerPtr  pParent, 
    18                                  UInt16             usParentFieldPos) :  
    19      Inherited    (                ), 
    20     _pEnclosingObj(pParent         ), 
    21     _childFieldId (0xFFFF          ), 
    22     _parentFieldId(usParentFieldPos) 
     18                                 UInt16             usChildFieldId, 
     19                                 UInt16             usParentFieldId) :  
     20     Inherited    (               ), 
     21    _pEnclosingObj(pParent        ), 
     22    _childFieldId (usChildFieldId ), 
     23    _parentFieldId(usParentFieldId) 
    2324{ 
    2425} 
     
    7071template <typename AccessHandlerT, Int32 NamespaceI> inline  
    7172UInt16 ChildPointerMFieldBase<AccessHandlerT,  
    72                               NamespaceI    >::getParentFieldPos(void) const 
     73                              NamespaceI    >::getParentFieldId(void) const 
    7374{ 
    7475    return _parentFieldId; 
  • trunk/Source/System/FieldContainer/Fields/PointerFields/OSGChildPointerSField.h

    r1148 r1155  
    118118 
    119119    ChildPointerSField(ParentT     pParent, 
    120                        UInt16      usParentFieldPos);  
     120                       UInt16      usChildFieldId, 
     121                       UInt16      usParentFieldId);  
    121122 
    122123    ChildPointerSField(const_value value, 
    123124                       ParentT     pParent, 
    124                        UInt16      usParentFieldPos);  
     125                       UInt16      usChildFieldId, 
     126                       UInt16      usParentFieldId);  
    125127 
    126128    /*! \}                                                                 */ 
  • trunk/Source/System/FieldContainer/Fields/PointerFields/OSGChildPointerSField.inl

    r1148 r1155  
    6969                   NamespaceI    >::ChildPointerSField( 
    7070                       ParentT pParent, 
    71                        UInt16  usParentFieldPos) :  
     71                       UInt16  usChildFieldId, 
     72                       UInt16  usParentFieldId) :  
    7273    Inherited(pParent,  
    73               usParentFieldPos) 
     74              usChildFieldId, 
     75              usParentFieldId) 
    7476{ 
    7577} 
     
    8183                       const_value value, 
    8284                       ParentT     pParent, 
    83                        UInt16      usParentFieldPos) : 
     85                       UInt16      usChildFieldId, 
     86                       UInt16      usParentFieldId) : 
    8487    Inherited(value, 
    8588              pParent, 
    86               usParentFieldPos) 
     89              usChildFieldId, 
     90              usParentFieldId) 
    8791{ 
    8892} 
  • trunk/Source/System/FieldContainer/Fields/PointerFields/OSGChildPointerSFieldBase.h

    r1152 r1155  
    5050     
    5151    ChildPointerSFieldBase(const FieldContainerPtr  pParent, 
    52                                  UInt16             usParentFieldPos); 
     52                                 UInt16             usChildFieldId, 
     53                                 UInt16             usParentFieldId); 
    5354 
    5455    ChildPointerSFieldBase(      const_value        value, 
    5556                           const FieldContainerPtr  pParent, 
    56                                  UInt16             usParentFieldPos); 
     57                                 UInt16             usChildFieldId, 
     58                                 UInt16             usParentFieldId); 
    5759     
    5860    /*! \}                                                                 */ 
     
    7476    void              setChildFieldId   (const UInt16 childFieldId    ); 
    7577     
    76     UInt16            getParentFieldPos (      void                   ) const; 
    77     void              setParentFieldPos (const UInt16 usParentFieldPos); 
     78    UInt16            getParentFieldId (      void                   ) const; 
     79    void              setParentFieldId  (const UInt16 usParentFieldId ); 
    7880 
    7981    /*! \}                                                                 */ 
     
    8486    FieldContainerPtr _pEnclosingObj; 
    8587    UInt16            _childFieldId; 
    86     UInt16            _usParentFieldPos
     88    UInt16            _usParentFieldId
    8789   
    8890    /*! \}                                                                 */ 
  • trunk/Source/System/FieldContainer/Fields/PointerFields/OSGChildPointerSFieldBase.inl

    r1148 r1155  
    1515                       NamespaceI>::ChildPointerSFieldBase( 
    1616                           const FieldContainerPtr  pParent, 
    17                                  UInt16             usParentFieldPos) : 
    18       Inherited       (                ), 
    19      _pEnclosingObj   (pParent         ), 
    20      _childFieldId    (0xFFFF          ), 
    21      _usParentFieldPos(usParentFieldPos) 
     17                                 UInt16             usChildFieldId, 
     18                                 UInt16             usParentFieldId) : 
     19      Inherited      (               ), 
     20     _pEnclosingObj  (pParent        ), 
     21     _childFieldId   (usChildFieldId ), 
     22     _usParentFieldId(usParentFieldId) 
    2223{ 
    2324} 
     
    2829                                 const_value        value, 
    2930                           const FieldContainerPtr  pParent, 
    30                                  UInt16             usParentFieldPos) :  
    31      Inherited       (                ), 
    32     _pEnclosingObj   (pParent         ), 
    33     _childFieldId    (0xFFFF          ), 
    34     _usParentFieldPos(usParentFieldPos) 
     31                                 UInt16             usChildFieldId, 
     32                                 UInt16             usParentFieldId) :  
     33     Inherited      (               ), 
     34    _pEnclosingObj  (pParent        ), 
     35    _childFieldId   (usChildFieldId ), 
     36    _usParentFieldId(usParentFieldId) 
    3537{ 
    3638    this->ptrStoreSet(value); 
     
    8183template <typename AccessHandlerT, Int32 NamespaceI> inline  
    8284UInt16 ChildPointerSFieldBase<AccessHandlerT,  
    83                               NamespaceI    >::getParentFieldPos(void) const 
     85                              NamespaceI    >::getParentFieldId(void) const 
    8486{ 
    85     return _usParentFieldPos
     87    return _usParentFieldId
    8688} 
    8789 
    8890template <typename AccessHandlerT, Int32 NamespaceI> inline  
    89 void ChildPointerSFieldBase<AccessHandlerT, NamespaceI>::setParentFieldPos
    90     const UInt16 usParentFieldPos
     91void ChildPointerSFieldBase<AccessHandlerT, NamespaceI>::setParentFieldId
     92    const UInt16 usParentFieldId
    9193{ 
    92     _usParentFieldPos = usParentFieldPos
     94    _usParentFieldId = usParentFieldId
    9395} 
    9496 
  • trunk/Source/System/FieldContainer/Fields/PointerFields/OSGParentPointerMField.h

    r1152 r1155  
    199199    template <class ST> 
    200200    friend class ParentMFieldConstIterator; 
     201 
     202    template <class OT, typename RC, Int32 NI> 
     203    friend class ParentPointerMField; 
    201204 
    202205    /*==========================  PUBLIC  =================================*/ 
     
    346349 
    347350    typedef typename Inherited::PtrStoreItType          PtrStoreItType; 
     351    typedef typename Inherited::PtrStoreConstItType     PtrStoreConstItType; 
    348352 
    349353    typedef          ParentMFieldConstIterator<Self   > const_iterator; 
     
    471475    iterator               find     (const_value value          ); 
    472476#endif 
     477    iterator               find_nc  (const_value value          ); 
    473478 
    474479    const_iterator         find     (const_value value          ) const; 
  • trunk/Source/System/FieldContainer/Fields/PointerFields/OSGParentPointerMField.inl

    r1152 r1155  
    241241} 
    242242 
     243template <class StorageTypeT> inline  
     244const typename ParentMFieldConstIterator<StorageTypeT>::Inherited & 
     245    ParentMFieldConstIterator<StorageTypeT>::ptrBase(void) const 
     246{ 
     247    return *this; 
     248} 
     249 
     250template <class StorageTypeT> inline  
     251const typename ParentMFieldConstIterator<StorageTypeT>::PosStorageIt & 
     252    ParentMFieldConstIterator<StorageTypeT>::idBase (void) const 
     253{ 
     254    return *this; 
     255} 
    243256 
    244257/*-------------------------------------------------------------------------*/ 
     
    449462} 
    450463 
     464template <class StorageTypeT> inline  
     465const typename ParentMFieldIterator<StorageTypeT>::Inherited & 
     466    ParentMFieldIterator<StorageTypeT>::ptrBase(void) const 
     467{ 
     468    return *this; 
     469} 
     470 
     471template <class StorageTypeT> inline  
     472const typename ParentMFieldIterator<StorageTypeT>::PosStorageIt & 
     473    ParentMFieldIterator<StorageTypeT>::idBase (void) const 
     474{ 
     475    return _posIt; 
     476} 
    451477 
    452478/*-------------------------------------------------------------------------*/ 
     
    793819                        NamespaceI    >::find(const_value value) 
    794820{ 
    795     return iterator(this->ptrStoreFind(value)); 
     821    IdStoreItType  posIt = _vParentPos.begin(); 
     822 
     823    PtrStoreItType ptrIt = this->ptrStoreFind(value); 
     824 
     825    posIt += (ptrIt - this->_ptrStore.begin()); 
     826 
     827    return iterator(ptrIt, posIt); 
    796828} 
    797829#endif 
     
    800832typename ParentPointerMField<ObjectTypeT, 
    801833                             RefCountPolicy, 
     834                             NamespaceI    >::iterator 
     835    ParentPointerMField<ObjectTypeT, 
     836                        RefCountPolicy, 
     837                        NamespaceI    >::find_nc(const_value value) 
     838{ 
     839    IdStoreItType  posIt = _vParentPos.begin(); 
     840 
     841    PtrStoreItType ptrIt = this->ptrStoreFind(value); 
     842 
     843    posIt += (ptrIt - this->_ptrStore.begin()); 
     844 
     845    return iterator(ptrIt, posIt); 
     846} 
     847 
     848template <class ObjectTypeT, typename RefCountPolicy, Int32 NamespaceI> inline  
     849typename ParentPointerMField<ObjectTypeT, 
     850                             RefCountPolicy, 
    802851                             NamespaceI    >::const_iterator 
    803852    ParentPointerMField<ObjectTypeT, 
     
    805854                        NamespaceI    >::find(const_value value) const 
    806855{ 
    807     return const_iterator(this->ptrStoreFind(value)); 
     856    IdStoreConstItType  posIt = _vParentPos.begin(); 
     857 
     858    PtrStoreConstItType ptrIt = this->ptrStoreFind(value); 
     859 
     860    posIt += (ptrIt - this->_ptrStore.begin()); 
     861 
     862    return const_iterator(ptrIt, posIt); 
    808863} 
    809864 
  • trunk/Source/System/FieldContainer/Node/OSGNode.cpp

    </
    r1113 r1155  
    490490#endif 
    491491 
    492 void Node::subChildPointer(FieldContainerPtr pObj,  
    493                            UInt16            usFieldPos) 
    494 { 
    495     if(usFieldPos == ChildrenFieldId) 
    496     { 
    497         NodePtr pChild = dynamic_cast<NodePtr>(pObj); 
    498  
    499         if(pChild != NullFC) 
    500             subChild(pChild); 
    501     } 
    502     else if(usFieldPos == CoreFieldId) 
    503     { 
    504         if(_sfCore.getValue() == pObj) 
    505         { 
    506             editSField(CoreFieldMask); 
    507  
    508             _sfCore.setValue(NullFC); 
    509         } 
    510     }