osg::ChangeList Class Reference
[Multithreading]

#include <OSGChangeList.h>

Inheritance diagram for osg::ChangeList:

osg::MemoryObject

List of all members.

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

Helper



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

Public Types

enum  Mode { Private, Public }
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

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

Definition at line 80 of file OSGChangeList.h.

Definition at line 81 of file OSGChangeList.h.

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.

Definition at line 196 of file OSGChangeList.h.


Member Enumeration Documentation

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::RemoteAspect::createCurrentStateChangeList(), 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(), osg::RemoteAspect::createCurrentStateChangeList(), 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 !defined(OSG_FIXED_MFIELDSYNC)
00215     if(_bReadOnly == true)
00216         return;
00217 #endif
00218 
00219     UInt32 uiContainerId = pFieldContainer.getFieldContainerId();
00220 
00221     _vSubRefdFieldContainers.push_back(uiContainerId);
00222 }

void ChangeList::addCreated ( const UInt32  uiContainerId  ) 

Definition at line 224 of file OSGChangeList.cpp.

References _bReadOnly, and _vCreatedFieldContainers.

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

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

void ChangeList::addDestroyed ( const UInt32  uiContainerId  ) 

Definition at line 232 of file OSGChangeList.cpp.

References _bReadOnly, and _vDestroyedFieldContainers.

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

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

void ChangeList::clearAll ( void   ) 

void ChangeList::swap ( ChangeList list  ) 

Definition at line 253 of file OSGChangeList.cpp.

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

00254 {
00255     _vChangedFieldContainers.swap(clist._vChangedFieldContainers);
00256     _vAddRefdFieldContainers.swap(clist._vAddRefdFieldContainers);
00257     _vSubRefdFieldContainers.swap(clist._vSubRefdFieldContainers);
00258     _vCreatedFieldContainers.swap(clist._vCreatedFieldContainers);
00259     _vDestroyedFieldContainers.swap(clist._vDestroyedFieldContainers);
00260 }

bool ChangeList::merge ( const ChangeList list  ) 

Definition at line 262 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().

00263 {
00264     bool returnValue = true;
00265  
00266     _vChangedFieldContainers.insert(_vChangedFieldContainers.end(),
00267                                     clist.beginChanged(), 
00268                                     clist.endChanged());
00269     
00270     
00271     _vAddRefdFieldContainers.insert(_vAddRefdFieldContainers.end(),
00272                                     clist.beginAddRefd(), 
00273                                     clist.endAddRefd());
00274     
00275     
00276     _vSubRefdFieldContainers.insert(_vSubRefdFieldContainers.end(),
00277                                     clist.beginSubRefd(), 
00278                                     clist.endSubRefd());
00279 
00280     _vCreatedFieldContainers.insert(_vCreatedFieldContainers.end(),
00281                                     clist.beginCreated(),
00282                                     clist.endCreated());
00283 
00284     _vDestroyedFieldContainers.insert(_vDestroyedFieldContainers.end(),
00285                                       clist.beginDestroyed(),
00286                                       clist.endDestroyed());
00287 
00288     return returnValue;
00289 }

bool ChangeList::empty ( void   )  const

void ChangeList::setAspect ( UInt32  uiAspectId  ) 

Definition at line 300 of file OSGChangeList.cpp.

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

00301 {
00302     if(_vChangedFieldContainers.size() != 0 ||
00303        _vAddRefdFieldContainers.size() != 0 ||
00304        _vSubRefdFieldContainers.size() != 0)
00305     {
00306         SWARNING << "Changing aspect on non empty changelist, all currrent "
00307                     << "entries will be lost" << std::endl;          
00308     }
00309 
00310     clearAll();
00311 
00312 //    OSGAspect::moveList(this, _aspectId, aspectId);
00313 
00314     _uiAspectId = uiAspectId;
00315 }

void ChangeList::setReadOnly ( bool  bReadOnly  ) 

Definition at line 317 of file OSGChangeList.cpp.

References _bReadOnly.

00318 {
00319     _bReadOnly = bReadOnly;
00320 }

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 330 of file OSGChangeList.cpp.

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

00331 {
00332     if(GlobalSystemState != Startup)
00333         FWARNING(("setReadWriteDefault: called after startup!\n"));
00334         
00335     _bReadWriteDefault = bReadWrite;
00336 }

void ChangeList::applyTo ( UInt32  uiAspectId  ) 

Definition at line 343 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().

00344 {
00345     UInt32 i;
00346 
00347     if(uiAspectId == _uiAspectId)
00348     {
00349         SWARNING << "Sync on the same aspect, ignored " << std::endl;
00350         return;
00351     }
00352 
00353     if(uiAspectId >= ThreadManager::getNumAspects())
00354     {
00355         SWARNING << "Invalid AspectId" << std::endl;
00356     }
00357 
00358     _bReadOnly = true;
00359     OSG::Thread::getCurrentChangeList()->setReadOnly(true);
00360 
00361     FieldContainerPtr pTmp;
00362 
00363     for(i = 0; i < _vChangedFieldContainers.size(); i++)
00364     {
00365         pTmp = FieldContainerFactory::the()->getContainer(
00366             _vChangedFieldContainers[i].first);
00367 
00368         if(pTmp == NullFC)
00369             continue;
00370 
00371         pTmp.executeSync(_uiAspectId,
00372                           uiAspectId,
00373                          _vChangedFieldContainers[i].second);
00374     }
00375 
00376     for(i = 0; i < _vAddRefdFieldContainers.size(); i++)
00377     {
00378         pTmp = FieldContainerFactory::the()->getContainer(
00379             _vAddRefdFieldContainers[i]);
00380 
00381         if(pTmp == NullFC)
00382             continue;
00383 
00384         addRefCP(pTmp);
00385     }
00386 
00387     for(i = 0; i < _vSubRefdFieldContainers.size(); i++)
00388     {
00389         pTmp = FieldContainerFactory::the()->getContainer(
00390             _vSubRefdFieldContainers[i]);
00391 
00392         if(pTmp == NullFC)
00393             continue;
00394 
00395         subRefCP(pTmp);
00396     }
00397 
00398     clearAll();
00399 
00400     _bReadOnly = false;
00401     OSG::Thread::getCurrentChangeList()->setReadOnly(false);
00402 
00403 }

void ChangeList::applyToCurrent ( void   ) 

Definition at line 405 of file OSGChangeList.cpp.

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

00406 {
00407     applyTo(Thread::getAspect());
00408 }

void ChangeList::apply ( void   ) 

Definition at line 412 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().

00413 {
00414     UInt32 i;
00415 
00416     if(OSG::Thread::getCurrentChangeList() == this)
00417     {
00418         SWARNING << "try to apply current changelist : ignored" << std::endl;
00419     }
00420 
00421     _bReadOnly = true;
00422 
00423     OSG::Thread::getCurrentChangeList()->setReadOnly(true);
00424 
00425     FieldContainerPtr pTmp;
00426 
00427     for(i = 0; i < _vChangedFieldContainers.size(); i++)
00428     {
00429         pTmp = FieldContainerFactory::the()->getContainer(
00430             _vChangedFieldContainers[i].first);
00431 
00432         if(pTmp == NullFC)
00433             continue;
00434 
00435         pTmp.executeSync(_uiAspectId,
00436                           Thread::getAspect(),
00437                          _vChangedFieldContainers[i].second);
00438     }
00439 
00440 #if !defined(OSG_FIXED_MFIELDSYNC)
00441     for(i = 0; i < _vAddRefdFieldContainers.size(); i++)
00442     {
00443         pTmp = FieldContainerFactory::the()->getContainer(
00444             _vAddRefdFieldContainers[i]);
00445 
00446         if(pTmp == NullFC)
00447             continue;
00448 
00449         addRefCP(pTmp);
00450     }
00451 
00452     for(i = 0; i < _vSubRefdFieldContainers.size(); i++)
00453     {
00454         pTmp = FieldContainerFactory::the()->getContainer(
00455             _vSubRefdFieldContainers[i]);
00456 
00457         if(pTmp == NullFC)
00458             continue;
00459 
00460         subRefCP(pTmp);
00461     }
00462 #endif
00463 
00464     _bReadOnly = false;
00465 
00466      OSG::Thread::getCurrentChangeList()->setReadOnly(false);
00467 }

void ChangeList::applyAndClear ( void   ) 

Definition at line 509 of file OSGChangeList.cpp.

References apply(), and clearAll().

00510 {
00511     apply   ();
00512     clearAll();
00513 }

void ChangeList::dump ( void   ) 

Definition at line 518 of file OSGChangeList.cpp.

References _uiAspectId, _vAddRefdFieldContainers, _vChangedFieldContainers, _vCreatedFieldContainers, _vDestroyedFieldContainers, _vSubRefdFieldContainers, osg::FieldContainerFactory::getContainer(), osg::NullFC, and osg::FieldContainerFactory::the().

00519 {
00520     UInt32 i;
00521 
00522     fprintf(stderr, "CL: %u\n", _uiAspectId);
00523 #if 0
00524     fprintf(stderr, "CLChanged:\n");
00525 
00526     for(i = 0; i < _vChangedFieldContainers.size(); i++)
00527     {
00528 //        fprintf(stderr, "\t%d\n", 
00529 //                _vChangedFieldContainers[i].first.getFieldContainerId());
00530         fprintf(stderr, "\t%u\n", 
00531                 _vChangedFieldContainers[i].first);
00532     }
00533 #endif
00534 
00535     fprintf(stderr, "CLAdd:\n");
00536     for(i = 0; i < _vAddRefdFieldContainers.size(); i++)
00537     {
00538 //        fprintf(stderr, "\t%d\n", 
00539 //                _vAddRefdFieldContainers[i].getFieldContainerId());
00540         fprintf(stderr, "\t%u\n", 
00541                 _vAddRefdFieldContainers[i]);
00542     }
00543 
00544     fprintf(stderr, "CLSub:\n");
00545     for(i = 0; i < _vSubRefdFieldContainers.size(); i++)
00546     {
00547 //        fprintf(stderr, "\t%d\n", 
00548 //                _vSubRefdFieldContainers[i].getFieldContainerId());
00549         fprintf(stderr, "\t%u\n", 
00550                 _vSubRefdFieldContainers[i]);
00551     }
00552 
00553     fprintf(stderr, "CLCreate:\n");
00554     for(i = 0; i < _vCreatedFieldContainers.size(); i++)
00555     {
00556         fprintf(stderr, "\t%u | ", _vCreatedFieldContainers[i]);
00557 
00558         FieldContainerPtr pTmp = FieldContainerFactory::the()->getContainer(
00559             _vCreatedFieldContainers[i]);
00560             
00561         if(pTmp != NullFC)
00562         {
00563             fprintf(stderr, "%s\n", pTmp->getType().getCName());
00564         }
00565         else
00566         {
00567             fprintf(stderr, "\n");
00568         }
00569     }
00570     
00571     fprintf(stderr, "CLDestroy:\n");
00572     for(i = 0; i < _vDestroyedFieldContainers.size(); i++)
00573     {
00574         fprintf(stderr, "\t%u\n", _vDestroyedFieldContainers[i]);
00575     }
00576 }

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

void MemoryObject::addRef ( void   )  [inherited]

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 202 of file OSGChangeList.h.


Member Data Documentation

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

Definition at line 209 of file OSGChangeList.h.

Referenced by setReadWriteDefault().

Definition at line 211 of file OSGChangeList.h.

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

Definition at line 212 of file OSGChangeList.h.


The documentation for this class was generated from the following files:

Generated on Mon Mar 17 12:04:41 2008 for OpenSG by  doxygen 1.5.5