Main Page | Modules | Namespace List | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Namespace Members | Class Members | File Members | Related Pages

osg::ChangeList Class Reference
[Multithreading]

#include <OSGChangeList.h>

Inheritance diagram for osg::ChangeList:

osg::MemoryObject List of all members.

Helper

*void clearAll (void)
bool merge (const ChangeList &list)
void setAspect (UInt32 uiAspectId)
void setReadOnly (bool bReadOnly)
static void setReadWriteDefault (bool bReadWrite=true)

Member

*bool _bReadOnly
UInt32 _uiAspectId
Mode _listMode
std::vector< ChangeEntry_vChangedFieldContainers
std::vector< IdRefEntry_vAddRefdFieldContainers
std::vector< IdRefEntry_vSubRefdFieldContainers
std::vector< IdRefEntry_vCreatedFieldContainers
std::vector< IdRefEntry_vDestroyedFieldContainers
static bool _bReadWriteDefault = false

Public Types

typedef std::pair< UInt32,
BitVector
ChangeEntry
typedef FieldContainerPtr RefEntry
typedef UInt32 IdRefEntry
typedef std::vector< ChangeEntry
>::size_type 
changed_size_type
typedef std::vector< ChangeEntry
>::const_iterator 
changed_const_iterator
typedef std::vector< IdRefEntry
>::size_type 
refd_size_type
typedef std::vector< IdRefEntry
>::const_iterator 
refd_const_iterator
typedef std::vector< IdRefEntry
>::size_type 
idrefd_size_type
typedef std::vector< IdRefEntry
>::const_iterator 
idrefd_const_iterator
enum  Mode { Private, Public }

Public Member Functions

Constructors
ChangeList (void)
Destructor
*virtual ~ChangeList (void)
Get
*changed_size_type sizeChanged (void)
changed_const_iterator beginChanged (void) const
changed_const_iterator endChanged (void) const
refd_size_type sizeAddRefd (void)
refd_const_iterator beginAddRefd (void) const
refd_const_iterator endAddRefd (void) const
refd_size_type sizeSubRefd (void)
refd_const_iterator beginSubRefd (void) const
refd_const_iterator endSubRefd (void) const
idrefd_const_iterator beginCreated (void) const
idrefd_const_iterator endCreated (void) const
idrefd_size_type sizeCreated (void) const
idrefd_const_iterator beginDestroyed (void) const
idrefd_const_iterator endDestroyed (void) const
idrefd_size_type sizeDestroyed (void) const
Add
*void addChanged (const FieldContainerPtr &pFieldContainer, BitVector bvWhichField)
void addAddRefd (const FieldContainerPtr &pFieldContainer)
void addSubRefd (const FieldContainerPtr &pFieldContainer)
void addCreated (const UInt32 uiContainerId)
void addDestroyed (const UInt32 uiContainerId)
Apply
*void applyTo (UInt32 uiAspectId)
void applyToCurrent (void)
void apply (void)
void applyAndClear (void)
Dump
*void dump (void)
Reference Counting
*void addRef (void)
void subRef (void)
Int32 getRefCount (void)

Protected Types

typedef MemoryObject Inherited

Private Member Functions

 ChangeList (const ChangeList &source)
 prohibit default function (move to 'public' if needed)
void operator= (const ChangeList &source)
 prohibit default function (move to 'public' if needed)

Friends

class Thread

Detailed Description

Definition at line 66 of file OSGChangeList.h.


Member Typedef Documentation

typedef std::pair<UInt32, BitVector> osg::ChangeList::ChangeEntry
 

Definition at line 80 of file OSGChangeList.h.

typedef FieldContainerPtr osg::ChangeList::RefEntry
 

Definition at line 81 of file OSGChangeList.h.

typedef UInt32 osg::ChangeList::IdRefEntry
 

Definition at line 82 of file OSGChangeList.h.

typedef std::vector<ChangeEntry>::size_type osg::ChangeList::changed_size_type
 

Definition at line 84 of file OSGChangeList.h.

typedef std::vector<ChangeEntry>::const_iterator osg::ChangeList::changed_const_iterator
 

Definition at line 85 of file OSGChangeList.h.

typedef std::vector<IdRefEntry>::size_type osg::ChangeList::refd_size_type
 

Definition at line 90 of file OSGChangeList.h.

typedef std::vector<IdRefEntry>::const_iterator osg::ChangeList::refd_const_iterator
 

Definition at line 91 of file OSGChangeList.h.

typedef std::vector<IdRefEntry>::size_type osg::ChangeList::idrefd_size_type
 

Definition at line 93 of file OSGChangeList.h.

typedef std::vector<IdRefEntry>::const_iterator osg::ChangeList::idrefd_const_iterator
 

Definition at line 94 of file OSGChangeList.h.

typedef MemoryObject osg::ChangeList::Inherited [protected]
 

Definition at line 190 of file OSGChangeList.h.


Member Enumeration Documentation

enum osg::ChangeList::Mode
 

Enumerator:
Private 
Public 

Definition at line 72 of file OSGChangeList.h.

00073     {
00074         Private,
00075         Public
00076     };


Constructor & Destructor Documentation

ChangeList::ChangeList void   ) 
 

Definition at line 67 of file OSGChangeList.cpp.

00067                            :
00068      Inherited                (                   ),
00069     _bReadOnly                (!_bReadWriteDefault),
00070     _uiAspectId               (Thread::getAspect()),
00071     _listMode                 (Public             ),
00072     _vChangedFieldContainers  (                   ),
00073     _vAddRefdFieldContainers  (                   ),
00074     _vSubRefdFieldContainers  (                   ),
00075     _vCreatedFieldContainers  (                   ),
00076     _vDestroyedFieldContainers(                   )
00077 {
00078 //    Aspect::addList(this, _aspectId);
00079 }

ChangeList::~ChangeList void   )  [virtual]
 

Definition at line 84 of file OSGChangeList.cpp.

00085 {
00086 }

osg::ChangeList::ChangeList const ChangeList source  )  [private]
 


Member Function Documentation

ChangeList::changed_size_type ChangeList::sizeChanged void   ) 
 

Definition at line 91 of file OSGChangeList.cpp.

References _vChangedFieldContainers.

00092 {    
00093     return _vChangedFieldContainers.size();
00094 }

ChangeList::changed_const_iterator ChangeList::beginChanged void   )  const
 

Definition at line 96 of file OSGChangeList.cpp.

References _vChangedFieldContainers.

Referenced by merge(), and osg::RemoteAspect::sendSync().

00097 {
00098     return _vChangedFieldContainers.begin();
00099 }

ChangeList::changed_const_iterator ChangeList::endChanged void   )  const
 

Definition at line 101 of file OSGChangeList.cpp.

References _vChangedFieldContainers.

Referenced by merge(), and osg::RemoteAspect::sendSync().

00102 {
00103     return _vChangedFieldContainers.end();
00104 }

ChangeList::refd_size_type ChangeList::sizeAddRefd void   ) 
 

Definition at line 106 of file OSGChangeList.cpp.

References _vAddRefdFieldContainers.

00107 {
00108     return _vAddRefdFieldContainers.size();
00109 }

ChangeList::refd_const_iterator ChangeList::beginAddRefd void   )  const
 

Definition at line 111 of file OSGChangeList.cpp.

References _vAddRefdFieldContainers.

Referenced by merge(), osg::RemoteAspect::sendSync(), and osg::RemoteAspect::storeChangeList().

00112 {
00113     return _vAddRefdFieldContainers.begin();
00114 }

ChangeList::refd_const_iterator ChangeList::endAddRefd void   )  const
 

Definition at line 116 of file OSGChangeList.cpp.

References _vAddRefdFieldContainers.

Referenced by merge(), osg::RemoteAspect::sendSync(), and osg::RemoteAspect::storeChangeList().

00117 {
00118     return _vAddRefdFieldContainers.end();
00119 }

ChangeList::refd_size_type ChangeList::sizeSubRefd void   ) 
 

Definition at line 121 of file OSGChangeList.cpp.

References _vSubRefdFieldContainers.

00122 {
00123     return _vSubRefdFieldContainers.size();
00124 }

ChangeList::refd_const_iterator ChangeList::beginSubRefd void   )  const
 

Definition at line 126 of file OSGChangeList.cpp.

References _vSubRefdFieldContainers.

Referenced by merge(), osg::RemoteAspect::sendSync(), and osg::RemoteAspect::storeChangeList().

00127 {
00128     return _vSubRefdFieldContainers.begin();
00129 }

ChangeList::refd_const_iterator ChangeList::endSubRefd void   )  const
 

Definition at line 131 of file OSGChangeList.cpp.

References _vSubRefdFieldContainers.

Referenced by merge(), osg::RemoteAspect::sendSync(), and osg::RemoteAspect::storeChangeList().

00132 {
00133     return _vSubRefdFieldContainers.end();
00134 }

ChangeList::idrefd_const_iterator ChangeList::beginCreated void   )  const
 

Definition at line 136 of file OSGChangeList.cpp.

References _vCreatedFieldContainers.

Referenced by merge(), osg::RemoteAspect::sendSync(), and osg::RemoteAspect::storeChangeList().

00137 {
00138     return _vCreatedFieldContainers.begin();
00139 }

ChangeList::idrefd_const_iterator ChangeList::endCreated void   )  const
 

Definition at line 141 of file OSGChangeList.cpp.

References _vCreatedFieldContainers.

Referenced by merge(), osg::RemoteAspect::sendSync(), and osg::RemoteAspect::storeChangeList().

00142 {
00143     return _vCreatedFieldContainers.end();
00144 }

ChangeList::idrefd_size_type ChangeList::sizeCreated void   )  const
 

Definition at line 146 of file OSGChangeList.cpp.

References _vCreatedFieldContainers.

00147 {
00148     return _vCreatedFieldContainers.size();
00149 }

ChangeList::idrefd_const_iterator ChangeList::beginDestroyed void   )  const
 

Definition at line 151 of file OSGChangeList.cpp.

References _vDestroyedFieldContainers.

Referenced by merge(), osg::RemoteAspect::sendSync(), and osg::RemoteAspect::storeChangeList().

00152 {
00153     return _vDestroyedFieldContainers.begin();
00154 }

ChangeList::idrefd_const_iterator ChangeList::endDestroyed void   )  const
 

Definition at line 156 of file OSGChangeList.cpp.

References _vDestroyedFieldContainers.

Referenced by merge(), osg::RemoteAspect::sendSync(), and osg::RemoteAspect::storeChangeList().

00157 {
00158     return _vDestroyedFieldContainers.end();
00159 }

ChangeList::idrefd_size_type ChangeList::sizeDestroyed void   )  const
 

Definition at line 161 of file OSGChangeList.cpp.

References _vDestroyedFieldContainers.

00162 {
00163     return _vDestroyedFieldContainers.size();
00164 }

void ChangeList::addChanged const FieldContainerPtr pFieldContainer,
BitVector  bvWhichField
 

Definition at line 169 of file OSGChangeList.cpp.

References _bReadOnly, _vChangedFieldContainers, clearAll(), osg::FieldContainerPtrBase::getFieldContainerId(), osg::RemoteAspect::restoreChangeList(), osg::RemoteAspect::storeChangeList(), and SWARNING.

Referenced by osg::FieldContainerPtr::endEditNotChanged(), and osg::RemoteAspect::restoreChangeList().

00171 {
00172     if(_bReadOnly == true)
00173         return;
00174 
00175     UInt32      uiContainerId(pFieldContainer.getFieldContainerId());
00176 
00177     ChangeEntry tmpEntry     (uiContainerId, bvWhichField);
00178 
00179     try
00180     {
00181         _vChangedFieldContainers.push_back(tmpEntry);
00182     }
00183     
00184     // std::bad_alloc doesn't work.
00185     catch(...)
00186     {
00187         // on windows the maximum vector size is 16777216 well
00188         // vector.max_size() returns 268435455 ????
00189         // to save some memory we recreate a more compact changelist.
00190         std::vector<ChangeEntry>::size_type oldSize = _vChangedFieldContainers.size();
00191         SWARNING << "Compacting ChangeList ..." << std::endl;
00192         // should move store/restore in this class, better wait for release 1.5.0
00193         RemoteAspect::storeChangeList(this);
00194         clearAll();
00195         RemoteAspect::restoreChangeList(this);
00196         SWARNING << "Compacted ChangeList from " << oldSize
00197                  << " to " << _vChangedFieldContainers.size() << " entries." << std::endl;
00198         _vChangedFieldContainers.push_back(tmpEntry);
00199     }
00200 }

void ChangeList::addAddRefd const FieldContainerPtr pFieldContainer  ) 
 

Definition at line 202 of file OSGChangeList.cpp.

References _bReadOnly, _vAddRefdFieldContainers, and osg::FieldContainerPtrBase::getFieldContainerId().

Referenced by osg::FieldContainerPtrBase::addRef(), and osg::RemoteAspect::restoreChangeList().

00203 {
00204     if(_bReadOnly == true)
00205         return;
00206 
00207     UInt32 uiContainerId = pFieldContainer.getFieldContainerId();
00208 
00209     _vAddRefdFieldContainers.push_back(uiContainerId);
00210 }

void ChangeList::addSubRefd const FieldContainerPtr pFieldContainer  ) 
 

Definition at line 212 of file OSGChangeList.cpp.

References _bReadOnly, _vSubRefdFieldContainers, and osg::FieldContainerPtrBase::getFieldContainerId().

Referenced by osg::FieldContainerPtrBase::subRef().

00213 {
00214     if(_bReadOnly == true)
00215         return;
00216 
00217     UInt32 uiContainerId = pFieldContainer.getFieldContainerId();
00218 
00219     _vSubRefdFieldContainers.push_back(uiContainerId);
00220 }

void ChangeList::addCreated const UInt32  uiContainerId  ) 
 

Definition at line 222 of file OSGChangeList.cpp.

References _bReadOnly, and _vCreatedFieldContainers.

Referenced by osg::FieldContainer::newPtr(), and osg::RemoteAspect::restoreChangeList().

00223 {
00224     if(_bReadOnly == true)
00225         return;
00226 
00227     _vCreatedFieldContainers.push_back(uiContainerId);
00228 }

void ChangeList::addDestroyed const UInt32  uiContainerId  ) 
 

Definition at line 230 of file OSGChangeList.cpp.

References _bReadOnly, and _vDestroyedFieldContainers.

Referenced by osg::FieldContainerPtrBase::deleteContainers().

00231 {
00232     if(_bReadOnly == true)
00233         return;
00234 
00235     _vDestroyedFieldContainers.push_back(uiContainerId);
00236 }

void ChangeList::clearAll void   ) 
 

Definition at line 241 of file OSGChangeList.cpp.

References _vAddRefdFieldContainers, _vChangedFieldContainers, _vCreatedFieldContainers, _vDestroyedFieldContainers, and _vSubRefdFieldContainers.

Referenced by addChanged(), applyAndClear(), applyTo(), osg::ClusterWindow::frameInit(), setAspect(), and osg::PThreadBase::setupChangeList().

00242 {
00243     _vChangedFieldContainers.clear();
00244     _vAddRefdFieldContainers.clear();
00245     _vSubRefdFieldContainers.clear();
00246 
00247     _vCreatedFieldContainers  .clear();
00248     _vDestroyedFieldContainers.clear();
00249 }

bool ChangeList::merge const ChangeList list  ) 
 

Definition at line 251 of file OSGChangeList.cpp.

References _vAddRefdFieldContainers, _vChangedFieldContainers, _vCreatedFieldContainers, _vDestroyedFieldContainers, _vSubRefdFieldContainers, beginAddRefd(), beginChanged(), beginCreated(), beginDestroyed(), beginSubRefd(), endAddRefd(), endChanged(), endCreated(), endDestroyed(), and endSubRefd().

Referenced by osg::ClusterWindow::frameInit().

00252 {
00253     bool returnValue = true;
00254  
00255     _vChangedFieldContainers.insert(_vChangedFieldContainers.end(),
00256                                     clist.beginChanged(), 
00257                                     clist.endChanged());
00258     
00259     
00260     _vAddRefdFieldContainers.insert(_vAddRefdFieldContainers.end(),
00261                                     clist.beginAddRefd(), 
00262                                     clist.endAddRefd());
00263     
00264     
00265     _vSubRefdFieldContainers.insert(_vSubRefdFieldContainers.end(),
00266                                     clist.beginSubRefd(), 
00267                                     clist.endSubRefd());
00268 
00269     _vCreatedFieldContainers.insert(_vCreatedFieldContainers.end(),
00270                                     clist.beginCreated(),
00271                                     clist.endCreated());
00272 
00273     _vDestroyedFieldContainers.insert(_vDestroyedFieldContainers.end(),
00274                                       clist.beginDestroyed(),
00275                                       clist.endDestroyed());
00276 
00277     return returnValue;
00278 }

void ChangeList::setAspect UInt32  uiAspectId  ) 
 

Definition at line 280 of file OSGChangeList.cpp.

References _uiAspectId, _vAddRefdFieldContainers, _vChangedFieldContainers, _vSubRefdFieldContainers, clearAll(), and SWARNING.

00281 {
00282     if(_vChangedFieldContainers.size() != 0 ||
00283        _vAddRefdFieldContainers.size() != 0 ||
00284        _vSubRefdFieldContainers.size() != 0)
00285     {
00286         SWARNING << "Changing aspect on non empty changelist, all currrent "
00287                     << "entries will be lost" << std::endl;          
00288     }
00289 
00290     clearAll();
00291 
00292 //    OSGAspect::moveList(this, _aspectId, aspectId);
00293 
00294     _uiAspectId = uiAspectId;
00295 }

void ChangeList::setReadOnly bool  bReadOnly  ) 
 

Definition at line 297 of file OSGChangeList.cpp.

References _bReadOnly.

00298 {
00299     _bReadOnly = bReadOnly;
00300 }

void ChangeList::setReadWriteDefault bool  bReadWrite = true  )  [static]
 

Define whether ChangeLists are created read only by default or not. Per default they are created read only, to not have a memory leak in applications that don't use multiple threads and don't clear the ChangeList. Thus if you want to use the ChangeLists, multiple threads and/or the cluster you have to call ChangeList::setReadOnlyDefault(true).

This function should only be called before osgInit.

Definition at line 310 of file OSGChangeList.cpp.

References _bReadWriteDefault, FWARNING, osg::GlobalSystemState, and osg::Startup.

00311 {
00312     if(GlobalSystemState != Startup)
00313         FWARNING(("setReadWriteDefault: called after startup!\n"));
00314         
00315     _bReadWriteDefault = bReadWrite;
00316 }

void ChangeList::applyTo UInt32  uiAspectId  ) 
 

Definition at line 323 of file OSGChangeList.cpp.

References _bReadOnly, _uiAspectId, _vAddRefdFieldContainers, _vChangedFieldContainers, _vSubRefdFieldContainers, osg::addRefCP(), clearAll(), osg::FieldContainerPtrBase::executeSync(), osg::FieldContainerFactory::getContainer(), osg::ThreadManager::getNumAspects(), osg::NullFC, osg::subRefCP(), SWARNING, and osg::FieldContainerFactory::the().

Referenced by applyToCurrent().

00324 {
00325     UInt32 i;
00326 
00327     if(uiAspectId == _uiAspectId)
00328     {
00329         SWARNING << "Sync on the same aspect, ignored " << std::endl;
00330         return;
00331     }
00332 
00333     if(uiAspectId >= ThreadManager::getNumAspects())
00334     {
00335         SWARNING << "Invalid AspectId" << std::endl;
00336     }
00337 
00338     _bReadOnly = true;
00339     OSG::Thread::getCurrentChangeList()->setReadOnly(true);
00340 
00341     FieldContainerPtr pTmp;
00342 
00343     for(i = 0; i < _vChangedFieldContainers.size(); i++)
00344     {
00345         pTmp = FieldContainerFactory::the()->getContainer(
00346             _vChangedFieldContainers[i].first);
00347 
00348         if(pTmp == NullFC)
00349             continue;
00350 
00351         pTmp.executeSync(_uiAspectId,
00352                           uiAspectId,
00353                          _vChangedFieldContainers[i].second);
00354     }
00355 
00356     for(i = 0; i < _vAddRefdFieldContainers.size(); i++)
00357     {
00358         pTmp = FieldContainerFactory::the()->getContainer(
00359             _vAddRefdFieldContainers[i]);
00360 
00361         if(pTmp == NullFC)
00362             continue;
00363 
00364         addRefCP(pTmp);
00365     }
00366 
00367     for(i = 0; i < _vSubRefdFieldContainers.size(); i++)
00368     {
00369         pTmp = FieldContainerFactory::the()->getContainer(
00370             _vSubRefdFieldContainers[i]);
00371 
00372         if(pTmp == NullFC)
00373             continue;
00374 
00375         subRefCP(pTmp);
00376     }
00377 
00378     clearAll();
00379 
00380     _bReadOnly = false;
00381     OSG::Thread::getCurrentChangeList()->setReadOnly(false);
00382 
00383 }

void ChangeList::applyToCurrent void   ) 
 

Definition at line 385 of file OSGChangeList.cpp.

References applyTo(), and osg::PThreadBase::getAspect().

00386 {
00387     applyTo(Thread::getAspect());
00388 }

void ChangeList::apply void   ) 
 

Definition at line 392 of file OSGChangeList.cpp.

References _bReadOnly, _uiAspectId, _vAddRefdFieldContainers, _vChangedFieldContainers, _vSubRefdFieldContainers, osg::addRefCP(), osg::FieldContainerPtrBase::executeSync(), osg::PThreadBase::getAspect(), osg::FieldContainerFactory::getContainer(), osg::NullFC, osg::subRefCP(), SWARNING, and osg::FieldContainerFactory::the().

Referenced by applyAndClear().

00393 {
00394     UInt32 i;
00395 
00396     if(OSG::Thread::getCurrentChangeList() == this)
00397     {
00398         SWARNING << "try to apply current changelist : ignored" << std::endl;
00399     }
00400 
00401     _bReadOnly = true;
00402 
00403     OSG::Thread::getCurrentChangeList()->setReadOnly(true);
00404 
00405     FieldContainerPtr pTmp;
00406 
00407     for(i = 0; i < _vChangedFieldContainers.size(); i++)
00408     {
00409         pTmp = FieldContainerFactory::the()->getContainer(
00410             _vChangedFieldContainers[i].first);
00411 
00412         if(pTmp == NullFC)
00413             continue;
00414 
00415         pTmp.executeSync(_uiAspectId,
00416                           Thread::getAspect(),
00417                          _vChangedFieldContainers[i].second);
00418     }
00419 
00420     for(i = 0; i < _vAddRefdFieldContainers.size(); i++)
00421     {
00422         pTmp = FieldContainerFactory::the()->getContainer(
00423             _vAddRefdFieldContainers[i]);
00424 
00425         if(pTmp == NullFC)
00426             continue;
00427 
00428         addRefCP(pTmp);
00429     }
00430 
00431     for(i = 0; i < _vSubRefdFieldContainers.size(); i++)
00432     {
00433         pTmp = FieldContainerFactory::the()->getContainer(
00434             _vSubRefdFieldContainers[i]);
00435 
00436         if(pTmp == NullFC)
00437             continue;
00438 
00439         subRefCP(pTmp);
00440     }
00441 
00442     _bReadOnly = false;
00443 
00444      OSG::Thread::getCurrentChangeList()->setReadOnly(false);
00445 }

void ChangeList::applyAndClear void   ) 
 

Definition at line 447 of file OSGChangeList.cpp.

References apply(), and clearAll().

00448 {
00449     apply   ();
00450     clearAll();
00451 }

void ChangeList::dump void   ) 
 

Definition at line 456 of file OSGChangeList.cpp.

References _uiAspectId, _vAddRefdFieldContainers, _vChangedFieldContainers, _vCreatedFieldContainers, _vDestroyedFieldContainers, and _vSubRefdFieldContainers.

00457 {
00458     UInt32 i;
00459 
00460     fprintf(stderr, "CL: %u\n", _uiAspectId);
00461     fprintf(stderr, "CLChanged:\n");
00462 
00463     for(i = 0; i < _vChangedFieldContainers.size(); i++)
00464     {
00465 //        fprintf(stderr, "\t%d\n", 
00466 //                _vChangedFieldContainers[i].first.getFieldContainerId());
00467         fprintf(stderr, "\t%u\n", 
00468                 _vChangedFieldContainers[i].first);
00469     }
00470 
00471     fprintf(stderr, "CLAdd:\n");
00472     for(i = 0; i < _vAddRefdFieldContainers.size(); i++)
00473     {
00474 //        fprintf(stderr, "\t%d\n", 
00475 //                _vAddRefdFieldContainers[i].getFieldContainerId());
00476         fprintf(stderr, "\t%u\n", 
00477                 _vAddRefdFieldContainers[i]);
00478     }
00479 
00480     fprintf(stderr, "CLSub:\n");
00481     for(i = 0; i < _vSubRefdFieldContainers.size(); i++)
00482     {
00483 //        fprintf(stderr, "\t%d\n", 
00484 //                _vSubRefdFieldContainers[i].getFieldContainerId());
00485         fprintf(stderr, "\t%u\n", 
00486                 _vSubRefdFieldContainers[i]);
00487     }
00488 
00489     fprintf(stderr, "CLCreate:\n");
00490     for(i = 0; i < _vCreatedFieldContainers.size(); i++)
00491     {
00492         fprintf(stderr, "\t%u\n", _vCreatedFieldContainers[i]);
00493     }
00494     
00495     fprintf(stderr, "CLDestroy:\n");
00496     for(i = 0; i < _vDestroyedFieldContainers.size(); i++)
00497     {
00498         fprintf(stderr, "\t%u\n", _vDestroyedFieldContainers[i]);
00499     }
00500 }

void osg::ChangeList::operator= const ChangeList source  )  [private]
 

void MemoryObject::addRef void   )  [inherited]
 

Definition at line 64 of file OSGMemoryObject.cpp.

References osg::MemoryObject::_refCount.

Referenced by osg::SharedObjectHandler::getSharedObject(), and osg::SharedObjectHandler::initialize().

00065 {
00066     _refCount++;
00067 }

void MemoryObject::subRef void   )  [inherited]
 

Definition at line 69 of file OSGMemoryObject.cpp.

References osg::MemoryObject::_refCount.

00070 {
00071     _refCount--;
00072 
00073     if(_refCount <= 0)
00074         delete this;
00075 }

Int32 MemoryObject::getRefCount void   )  [inherited]
 

Definition at line 77 of file OSGMemoryObject.cpp.

References osg::MemoryObject::_refCount.

00078 {
00079     return _refCount;
00080 }


Friends And Related Function Documentation

friend class Thread [friend]
 

Definition at line 196 of file OSGChangeList.h.


Member Data Documentation

* bool osg::ChangeList::_bReadOnly [private]
 

Definition at line 202 of file OSGChangeList.h.

Referenced by addAddRefd(), addChanged(), addCreated(), addDestroyed(), addSubRefd(), apply(), applyTo(), and setReadOnly().

bool ChangeList::_bReadWriteDefault = false [static, private]
 

Definition at line 62 of file OSGChangeList.cpp.

Referenced by setReadWriteDefault().

UInt32 osg::ChangeList::_uiAspectId [private]
 

Definition at line 205 of file OSGChangeList.h.

Referenced by apply(), applyTo(), dump(), and setAspect().

Mode osg::ChangeList::_listMode [private]
 

Definition at line 206 of file OSGChangeList.h.