Changeset 1157
- Timestamp:
- 04/14/08 08:19:31 (1 month ago)
- Files:
-
- trunk/Source/System/FieldContainer/Fields/Base/OSGFieldContainerPtrChildMField.h (modified) (4 diffs)
- trunk/Source/System/FieldContainer/Fields/Base/OSGFieldContainerPtrChildMField.inl (modified) (10 diffs)
- trunk/Source/System/FieldContainer/Fields/Base/OSGFieldContainerPtrChildSField.h (modified) (4 diffs)
- trunk/Source/System/FieldContainer/Fields/Base/OSGFieldContainerPtrChildSField.inl (modified) (6 diffs)
- trunk/Source/System/FieldContainer/Fields/Base/OSGFieldContainerPtrParentMField.h (modified) (6 diffs)
- trunk/Source/System/FieldContainer/Fields/Base/OSGFieldContainerPtrParentMField.inl (modified) (2 diffs)
- trunk/Source/System/FieldContainer/Fields/Base/OSGFieldContainerPtrParentSField.h (modified) (1 diff)
- trunk/Source/System/FieldContainer/Fields/Base/OSGFieldContainerPtrParentSField.inl (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/Source/System/FieldContainer/Fields/Base/OSGFieldContainerPtrChildMField.h
r1153 r1157 417 417 418 418 FieldContainerPtrChildMField(ParentT pParent, 419 UInt16 usParentFieldPos); 419 UInt16 usChildFieldId, 420 UInt16 usParentFieldId); 420 421 421 422 /*! \} */ … … 570 571 protected: 571 572 573 #if 0 572 574 struct SingleParentHandler 573 575 { … … 626 628 SingleParentHandler, 627 629 MultiParentHandler>::type ParentHandler; 630 #endif 628 631 629 632 /*---------------------------------------------------------------------*/ … … 658 661 659 662 ParentT _pParent; 660 UInt16 _usParentFieldPos; 663 UInt16 _usChildFieldId; 664 UInt16 _usParentFieldId; 661 665 662 666 /*! \} */ trunk/Source/System/FieldContainer/Fields/Base/OSGFieldContainerPtrChildMField.inl
r1153 r1157 77 77 iNamespace >::FieldContainerPtrChildMField( 78 78 ParentT pParent, 79 UInt16 usParentFieldPos) : 80 Inherited ( ), 81 _pParent (pParent ), 82 _usParentFieldPos(usParentFieldPos) 79 UInt16 usChildFieldId, 80 UInt16 usParentFieldId) : 81 Inherited ( ), 82 _pParent (pParent ), 83 _usChildFieldId (usChildFieldId ), 84 _usParentFieldId(usParentFieldId) 83 85 { 84 86 } … … 258 260 this); 259 261 260 ParentHandler::updateParentLinking(value, _pParent, _usParentFieldPos); 262 // ParentHandler::updateParentLinking(value, _pParent, _usParentFieldPos); 263 264 FieldContainerPtr pTmp = value; 265 266 if(pTmp != NullFC) 267 pTmp->linkParent(_pParent, _usChildFieldId, _usParentFieldId); 261 268 262 269 return returnValue; … … 275 282 while(fieldIt != fieldEnd) 276 283 { 284 /* 277 285 ParentHandler::clearParentLinking(*fieldIt, 278 286 _pParent, 279 287 _usParentFieldPos); 288 */ 289 290 FieldContainerPtr pTmp = *fieldIt; 291 292 if(pTmp != NullFC) 293 { 294 pTmp->unlinkParent(_pParent, _usParentFieldId); 295 } 280 296 281 297 RefCountPolicy::subRef(*fieldIt); … … 299 315 typename StorageType::iterator tmpIt(pos); 300 316 301 ParentHandler::clearParentLinking(*tmpIt, _pParent, _usParentFieldPos); 302 317 // ParentHandler::clearParentLinking(*tmpIt, _pParent, _usParentFieldPos); 318 319 FieldContainerPtr pTmp = *tmpIt; 320 321 if(pTmp != NullFC) 322 pTmp->unlinkParent(_pParent, _usParentFieldId); 323 303 324 RefCountPolicy::subRef(*tmpIt); 304 325 … … 324 345 for(; first != last; ++first) 325 346 { 347 /* 326 348 ParentHandler::clearParentLinking( first.deref(), 327 349 _pParent, 328 350 _usParentFieldPos); 351 */ 352 353 FieldContainerPtr pTmp = first.deref(); 354 355 if(pTmp != NullFC) 356 { 357 pTmp->unlinkParent(_pParent, _usParentFieldId); 358 } 329 359 330 360 RefCountPolicy::subRef(first.deref()); … … 341 371 typename RefCountPolicy, 342 372 Int32 iNamespace > inline 373 typename FieldContainerPtrChildMField<ValueT, 374 RefCountPolicy, 375 iNamespace >::iterator 376 FieldContainerPtrChildMField<ValueT, 377 RefCountPolicy, 378 iNamespace >::find_nc(ArgumentType value) 379 { 380 typename StorageType::iterator sIt = 381 (this->template dcast<typename Self::StorageType>()).begin(); 382 typename StorageType::iterator sEnd = 383 (this->template dcast<typename Self::StorageType>()).end (); 384 385 typename StorageType::iterator ptrIt = std::find(sIt, sEnd, value); 386 387 return iterator(ptrIt, this); 388 } 389 390 391 template<class ValueT, 392 typename RefCountPolicy, 393 Int32 iNamespace > inline 343 394 void FieldContainerPtrChildMField<ValueT, 344 395 RefCountPolicy, … … 349 400 _values.push_back(value); 350 401 351 ParentHandler::updateParentLinking(value, _pParent, _usParentFieldPos); 402 // ParentHandler::updateParentLinking(value, _pParent, _usParentFieldPos); 403 404 if(_values.back() != NullFC) 405 _values.back()->linkParent(_pParent, _usChildFieldId, _usParentFieldId); 352 406 } 353 407 … … 370 424 _values.resize(newsize, t); 371 425 372 ParentHandler::updateParentLinking(t, _pParent, _usParentFieldPos); 426 //ParentHandler::updateParentLinking(t, _pParent, _usParentFieldPos); 427 428 FieldContainerPtr pTmp = t; 429 430 if(pTmp != NullFC) 431 pTmp->linkParent(_pParent, _usChildFieldId, _usParentFieldId); 373 432 374 433 typename Inherited::iterator vI = _values.begin() + oldSize; … … 402 461 StorageType &oStorage = this->template dcast<typename Self::StorageType>(); 403 462 463 /* 404 464 ParentHandler::clearParentLinking( oStorage[uiIdx], 405 465 _pParent, 406 466 _usParentFieldPos); 467 */ 468 469 if(_values[uiIdx] != NullFC) 470 { 471 _values[uiIdx]->unlinkParent(_pParent, _usParentFieldId); 472 } 407 473 408 474 RefCountPolicy::setRefd(oStorage[uiIdx], value); 409 475 410 ParentHandler::updateParentLinking(value, _pParent, _usParentFieldPos); 476 // ParentHandler::updateParentLinking(value, _pParent, _usParentFieldPos); 477 478 if(_values[uiIdx] != NullFC) 479 { 480 _values[uiIdx]->linkParent(_pParent, _usChildFieldId, _usParentFieldId); 481 } 411 482 } 412 483 … … 421 492 typename StorageType::iterator tmpIt(pos); 422 493 423 ParentHandler::clearParentLinking(*tmpIt, _pParent, _usParentFieldPos); 494 // ParentHandler::clearParentLinking(*tmpIt, _pParent, _usParentFieldPos); 495 496 if(*tmpIt != NullFC) 497 { 498 (*tmpIt)->unlinkParent(_pParent, _usParentFieldId); 499 } 424 500 425 501 RefCountPolicy::setRefd(*tmpIt, value); 426 502 427 ParentHandler::updateParentLinking(value, _pParent, _usParentFieldPos); 503 // ParentHandler::updateParentLinking(value, _pParent, _usParentFieldPos); 504 505 if(value != NullFC) 506 { 507 value->linkParent(_pParent, _usChildFieldId, _usParentFieldId); 508 } 428 509 } 429 510 trunk/Source/System/FieldContainer/Fields/Base/OSGFieldContainerPtrChildSField.h
r1150 r1157 105 105 106 106 FieldContainerPtrChildSField(ParentT pParent, 107 UInt16 usParentFieldPos); 107 UInt16 usChildFieldId, 108 UInt16 usParentFieldId); 108 109 109 110 FieldContainerPtrChildSField(ArgumentType value, 110 111 ParentT pParent, 111 UInt16 usParentFieldPos); 112 UInt16 usChildFieldId, 113 UInt16 usParentFieldId); 112 114 113 115 /*! \} */ … … 168 170 protected: 169 171 172 #if 0 170 173 struct SingleParentHandler 171 174 { … … 224 227 SingleParentHandler, 225 228 MultiParentHandler>::type ParentHandler; 229 #endif 226 230 227 231 /*---------------------------------------------------------------------*/ … … 256 260 257 261 ParentT _pParent; 258 UInt16 _usParentFieldPos; 262 UInt16 _usChildFieldId; 263 UInt16 _usParentFieldId; 259 264 260 265 /*! \} */ trunk/Source/System/FieldContainer/Fields/Base/OSGFieldContainerPtrChildSField.inl
r1140 r1157 76 76 iNamespace >::FieldContainerPtrChildSField( 77 77 ParentT pParent, 78 UInt16 usParentFieldPos) : 79 Inherited ( ), 80 _pParent (pParent ), 81 _usParentFieldPos(usParentFieldPos) 78 UInt16 usChildFieldId, 79 UInt16 usParentFieldId) : 80 Inherited ( ), 81 _pParent (pParent ), 82 _usChildFieldId (usChildFieldId ), 83 _usParentFieldId(usParentFieldId) 82 84 { 83 85 } … … 92 94 ArgumentType value, 93 95 ParentT pParent, 94 UInt16 usParentFieldPos) : 95 Inherited ( ), 96 _pParent (pParent ), 97 _usParentFieldPos(usParentFieldPos) 96 UInt16 usChildFieldId, 97 UInt16 usParentFieldId) : 98 Inherited ( ), 99 _pParent (pParent ), 100 _usChildFieldId (usChildFieldId ), 101 _usParentFieldId(usParentFieldId) 98 102 { 99 103 RefCountPolicy::setRefd(_fieldValue, value); … … 143 147 StoredType pVal = this->template dcast<typename Self::StoredType>(); 144 148 145 ParentHandler::clearParentLinking(pVal, _pParent, _usParentFieldPos); 149 // ParentHandler::clearParentLinking(pVal, _pParent, _usParentFieldPos); 150 151 if(_fieldValue != NullFC) 152 _fieldValue->unlinkParent(_pParent, _usParentFieldId); 146 153 147 154 /* … … 156 163 pVal = this->template dcast<typename Self::StoredType>(); 157 164 158 ParentHandler::updateParentLinking(pVal, _pParent, _usParentFieldPos); 165 // ParentHandler::updateParentLinking(pVal, _pParent, _usParentFieldPos); 166 167 if(_fieldValue != NullFC) 168 _fieldValue->linkParent(_pParent, _usChildFieldId, _usParentFieldId); 169 159 170 160 171 /* … … 175 186 StoredType pVal = this->template dcast<typename Self::StoredType>(); 176 187 177 ParentHandler::clearParentLinking(pVal, _pParent, _usParentFieldPos); 188 // ParentHandler::clearParentLinking(pVal, _pParent, _usParentFieldPos); 189 190 if(pVal != NullFC) 191 pVal->unlinkParent(_pParent, _usParentFieldId); 178 192 179 193 /* … … 188 202 pVal = this->template dcast<typename Self::StoredType>(); 189 203 190 ParentHandler::updateParentLinking(pVal, _pParent, _usParentFieldPos); 204 // ParentHandler::updateParentLinking(pVal, _pParent, _usParentFieldPos); 205 206 if(pVal != NullFC) 207 pVal->linkParent(_pParent, _usChildFieldId, _usParentFieldId); 191 208 192 209 /* trunk/Source/System/FieldContainer/Fields/Base/OSGFieldContainerPtrParentMField.h
r1153 r1157 102 102 103 103 template<class StorageTypeT> 104 class const_ptrfield_iterator; 105 106 template<class StorageTypeT> 104 107 class ptrfield_iterator : protected StorageTypeT::iterator 105 108 { … … 108 111 typedef std::vector<UInt16> PosStorage; 109 112 typedef std::vector<UInt16>::iterator PosStorageIt; 113 114 typedef const_ptrfield_iterator<StorageTypeT> const_it; 115 116 template<class ST> 117 friend class const_ptrfield_iterator; 110 118 111 119 PosStorageIt _posIt; … … 156 164 } 157 165 166 bool operator ==(const const_it &rhs) const 167 { 168 return *(static_cast<const Inherited *>(this)) == rhs; 169 } 170 171 bool operator !=(const const_it &rhs) const 172 { 173 return ! (*this == rhs); 174 } 175 158 176 ptrfield_iterator &operator ++(void) 159 177 { … … 175 193 } 176 194 195 PosStorageIt getPosIt(void) const 196 { 197 return _posIt; 198 } 199 200 Inherited getBaseIt(void) const 201 { 202 return *this; 203 } 204 177 205 protected: 178 206 }; … … 185 213 typedef std::vector<UInt16> PosStorage; 186 214 typedef std::vector<UInt16>::const_iterator PosStorageIt; 215 216 template<class ST> 217 friend class ptrfield_iterator; 187 218 188 219 PosStorageIt _posIt; … … 321 352 void erase (size_type pos ); 322 353 354 iterator find_nc (ArgumentType value ); 355 323 356 iterator find (ArgumentType value ); 324 357 const_iterator find (ArgumentType value ) const; trunk/Source/System/FieldContainer/Fields/Base/OSGFieldContainerPtrParentMField.inl
r1153 r1157 240 240 241 241 template<class ValueT, typename RefCountPolicy, Int32 iNamespace> inline 242 typename FieldContainerPtrParentMField<ValueT, 243 RefCountPolicy, 244 iNamespace >::iterator 245 FieldContainerPtrParentMField<ValueT, 246 RefCountPolicy, 247 iNamespace >::erase(iterator pos) 248 { 249 typename StorageType::iterator tmpIt(pos.getBaseIt()); 250 251 RefCountPolicy::subRef(*tmpIt); 252 253 std::vector<UInt16> ::iterator posIt = _vParentPos.erase(pos.getPosIt()); 254 255 return iterator( 256 (this->template dcast<typename Self::StorageType>()).erase(tmpIt), 257 posIt); 258 259 } 260 261 template<class ValueT, typename RefCountPolicy, Int32 iNamespace> inline 242 262 void FieldContainerPtrParentMField<ValueT, 243 263 RefCountPolicy, … … 255 275 256 276 _vParentPos.erase(pIt); 277 } 278 279 template<class ValueT, typename RefCountPolicy, Int32 iNamespace> inline 280 typename FieldContainerPtrParentMField<ValueT, 281 RefCountPolicy, 282 iNamespace >::iterator 283 FieldContainerPtrParentMField<ValueT, 284 RefCountPolicy, 285 iNamespace >::find_nc(ArgumentType value) 286 { 287 typename StorageType::iterator sIt = 288 (this->template dcast<typename Self::StorageType>()).begin(); 289 typename StorageType::iterator sEnd = 290 (this->template dcast<typename Self::StorageType>()).end (); 291 292 typename StorageType::iterator ptrIt = std::find(sIt, sEnd, value); 293 294 std::vector<UInt16>::iterator posIt = _vParentPos.begin(); 295 296 posIt += (ptrIt - 297 (this->template dcast<typename Self::StorageType>()).begin()); 298 299 return iterator(ptrIt, posIt); 257 300 } 258 301 trunk/Source/System/FieldContainer/Fields/Base/OSGFieldContainerPtrParentSField.h
r1150 r1157 120 120 /*! \{ */ 121 121 122 const_reference getValue(void) const; 122 const_reference getValue (void) const; 123 UInt16 getParentFieldPos(void) const; 123 124 124 125 /*! \} */ trunk/Source/System/FieldContainer/Fields/Base/OSGFieldContainerPtrParentSField.inl
r1120 r1157 123 123 124 124 template<class ValueT, typename RefCountPolicy, Int32 iNamespace> inline 125 UInt16 FieldContainerPtrParentSField<ValueT, 126 RefCountPolicy, 127 iNamespace >::getParentFieldPos( 128 void) const 129 { 130 return _uiParentFieldPos; 131 } 132 133 template<class ValueT, typename RefCountPolicy, Int32 iNamespace> inline 125 134 void FieldContainerPtrParentSField<ValueT, 126 135 RefCountPolicy,
