#include <OSGAttachmentPtrImpl.h>

Public Types | |
| typedef Attachment | StoredObjectType |
| typedef AttachmentPtr | ObjectType |
| typedef FieldContainerPtr | Inherited |
| typedef UInt8 *FieldContainerPtrBase::* | unspecified_bool_type |
Public Member Functions | |
| OSG_PROPERTY_DECL (Pointer) | |
Constructors | |
| AttachmentPtr (void) | |
| AttachmentPtr (const AttachmentPtr &source) | |
| AttachmentPtr (const NullFieldContainerPtr &source) | |
Destructor | |
| ~AttachmentPtr (void) | |
Container Access | |
| Attachment * | operator-> (void) |
| Attachment * | operator-> (void) const |
| Attachment & | operator* (void) |
| Attachment & | operator* (void) const |
| Attachment * | getCPtr (void) |
| Attachment * | getCPtr (void) const |
Assignment | |
| void | operator= (const AttachmentPtr &source) |
| void | operator= (const NullFieldContainerPtr &source) |
Container Constructors | |
| AttachmentPtr (const Attachment &source) | |
| Container Constructor, used to work around MS Bugs, use them only if you really now what you are doing ;-). | |
| AttachmentPtr (const Attachment *source) | |
| Container Constructor, used to work around MS Bugs, use them only if you really now what you are doing ;-). | |
Parent Field Pos | |
| void | setParentFieldPos (UInt16 uiParentEPos) |
| UInt16 | getParentFieldPos (void) const |
Get Container Information | |
| Int32 | getRefCount (void) const |
| UInt32 | getFieldContainerId (void) const |
| UInt16 | getContainerSize (void) const |
Get Container C++ Pointer | |
| FieldContainer * | getBaseCPtr (void) const |
| FieldContainer * | getAspectCPtr (UInt32 uiAspectId) const |
Comparison | |
| bool | operator< (const NullFieldContainerPtr &) const |
| bool | operator< (const FieldContainerPtrBase &) const |
| bool | operator== (const NullFieldContainerPtr &other) const |
| bool | operator== (const FieldContainerPtrBase &other) const |
| bool | operator!= (const NullFieldContainerPtr &other) const |
| bool | operator!= (const FieldContainerPtrBase &other) const |
| bool | operator! (void) const |
| operator unspecified_bool_type () const | |
Dump | |
| void | dump (UInt32 uiIndent=0, const BitVector bvFlags=0) const |
Static Public Member Functions | |
dcast | |
| template<class InTypeT> | |
| static AttachmentPtr | dcast (const InTypeT oIn) |
Static Public Attributes | |
| static const UInt16 | InvalidParentEPos = 0xFFFF |
Protected Member Functions | |
Internal Constructors | |
| AttachmentPtr (const Attachment *source, const UInt16 uiSize, const UInt16 uiParentPos) | |
MT Edit | |
| void | beginEdit (BitVector whichField, UInt32 origin) const |
| void | endEdit (BitVector whichField, UInt32 origin) const |
| void | changed (BitVector whichField, UInt32 origin) const |
| void | endEditNotChanged (BitVector whichField, UInt32 origin) const |
Sync | |
| void | executeSync (UInt32 uiFromAspect, UInt32 uiToAspect, BitVector whichField) |
Get Memory Locations | |
| Int32 * | getRefCountP (void) |
| Int32 * | getRefCountP (void) const |
| UInt32 * | getIdP (void) |
| UInt32 * | getIdP (void) const |
| UInt8 * | getFirstElemP (void) |
| UInt8 * | getFirstElemP (void) const |
| UInt8 * | getElemP (UInt32 uiElemNum) |
| UInt8 * | getElemP (UInt32 uiElemNum) const |
Get Memory Offsets | |
| Int32 | getRefCountOff (void) const |
| Int32 | getIdOff (void) const |
| Int32 | getFirstElemOff (void) const |
| Int32 | getElemOff (UInt32 uiElemNum) const |
Reference Counting | |
| void | addRef (void) const |
| void | subRef (void) const |
| void | deleteContainers (void) const |
Helper | |
| void | setNull (void) |
Static Protected Member Functions | |
Intialization / Termination | |
| static bool | initialize (void) |
| static bool | terminate (void) |
Protected Attributes | |
Member | |
| UInt16 | _containerSize |
| UInt16 | _uiParentEPos |
| UInt8 * | _storeP |
Friends | |
| class | FieldContainer |
Definition at line 71 of file OSGAttachmentPtrImpl.h.
typedef UInt8* FieldContainerPtrBase::* osg::FieldContainerPtrBase::unspecified_bool_type [inherited] |
Definition at line 99 of file OSGFieldContainerPtrImpl.h.
| osg::AttachmentPtr::AttachmentPtr | ( | void | ) | [inline] |
Definition at line 54 of file OSGAttachmentPtrImpl.inl.
Referenced by dcast().
00054 : 00055 Inherited() 00056 { 00057 }
| osg::AttachmentPtr::AttachmentPtr | ( | const AttachmentPtr & | source | ) | [inline] |
Definition at line 60 of file OSGAttachmentPtrImpl.inl.
00060 : 00061 00062 Inherited(source) 00063 { 00064 }
| osg::AttachmentPtr::AttachmentPtr | ( | const NullFieldContainerPtr & | source | ) | [inline] |
Definition at line 67 of file OSGAttachmentPtrImpl.inl.
00067 : 00068 00069 Inherited(source) 00070 { 00071 }
| osg::AttachmentPtr::~AttachmentPtr | ( | void | ) | [inline] |
| AttachmentPtr::AttachmentPtr | ( | const Attachment & | source | ) | [explicit] |
Definition at line 55 of file OSGAttachmentPtr.cpp.
00055 : 00056 00057 Inherited(source) 00058 { 00059 }
| AttachmentPtr::AttachmentPtr | ( | const Attachment * | source | ) | [explicit] |
Definition at line 61 of file OSGAttachmentPtr.cpp.
00061 : 00062 00063 Inherited(source) 00064 { 00065 }
| AttachmentPtr::AttachmentPtr | ( | const Attachment * | source, | |
| const UInt16 | uiSize, | |||
| const UInt16 | uiParentPos | |||
| ) | [protected] |
Definition at line 67 of file OSGAttachmentPtr.cpp.
00069 : 00070 00071 Inherited(source, uiSize, uiParentPos) 00072 { 00073 }
| AttachmentPtr osg::AttachmentPtr::dcast | ( | const InTypeT | oIn | ) | [inline, static] |
Definition at line 51 of file OSGAttachmentPtrDepImpl.inl.
References AttachmentPtr().
Referenced by osg::SharePtrGraphOp::addAttachmentParent(), osg::Surface::buildSurface(), osg::SharePtrGraphOp::clearAttachmentParent(), osg::SharePtrGraphOp::compareFCs(), osg::VertexProgramChunkBase::create(), osg::TwoSidedLightingChunkBase::create(), osg::TransformChunkBase::create(), osg::TextureTransformChunkBase::create(), osg::TextureChunkBase::create(), osg::TexGenChunkBase::create(), osg::StringAttributeMapBase::create(), osg::StencilChunkBase::create(), osg::SHLParameterChunkBase::create(), osg::SHLChunkBase::create(), osg::SClipPlaneChunkBase::create(), osg::RenderOptionsBase::create(), osg::RegisterCombinersChunkBase::create(), osg::PolygonChunkBase::create(), osg::PointChunkBase::create(), osg::MaterialChunkBase::create(), osg::LogicOpChunkBase::create(), osg::LineChunkBase::create(), osg::LightModelChunkBase::create(), osg::LightChunkBase::create(), osg::FragmentProgramChunkBase::create(), osg::FCPtrAttributeMapBase::create(), osg::FatBorderChunkBase::create(), osg::DVRVolumeTextureBase::create(), osg::DVRLookupTableBase::create(), osg::DVRIsoSurfaceBase::create(), osg::DVRClipObjectsBase::create(), osg::DepthChunkBase::create(), osg::CubeTextureChunkBase::create(), osg::ColorMaskChunkBase::create(), osg::ClipPlaneChunkBase::create(), osg::BlendChunkBase::create(), osg::FieldContainerType::createAttachment(), osg::PhongMaterial::createFragmentProgram(), osg::deepClone(), osg::deepCloneAttachments(), osg::VRMLPixelTextureDesc::endNode(), osg::VRMLImageTextureDesc::endNode(), osg::VRMLTextureTransformDesc::endNode(), osg::VRMLAppearanceDesc::endNode(), osg::fcptrAttributeMap(), modifyMaterial(), osg::RenderAction::RenderAction(), osg::OSGLoader::setFieldContainerValue(), osg::setTestCubeImages(), osg::stringAttributeMap(), and osg::VRMLWriteAction::writeMaterial().
00052 { 00053 return AttachmentPtr( 00054 (dynamic_cast<const Attachment *>(oIn.getCPtr())), 00055 oIn.getContainerSize(), 00056 oIn.getParentFieldPos()); 00057 }
| Attachment * osg::AttachmentPtr::operator-> | ( | void | ) | [inline] |
Reimplemented from osg::FieldContainerPtr.
Definition at line 85 of file OSGAttachmentPtrImpl.inl.
References osg::PThreadBase::getAspect(), osg::FieldContainerPtrBase::getElemP(), and osg::FieldContainerPtr::operator->().
00086 { 00087 #if 0 00088 return (Attachment *) getElemP(Thread::getAspect()); 00089 #else 00090 return (Attachment *) Inherited::operator ->(); 00091 #endif 00092 }
| Attachment * osg::AttachmentPtr::operator-> | ( | void | ) | const [inline] |
Reimplemented from osg::FieldContainerPtr.
Definition at line 95 of file OSGAttachmentPtrImpl.inl.
References osg::PThreadBase::getAspect(), osg::FieldContainerPtrBase::getElemP(), and osg::FieldContainerPtr::operator->().
00096 { 00097 #if 0 00098 return (Attachment *) getElemP(Thread::getAspect()); 00099 #else 00100 return (Attachment *) Inherited::operator ->(); 00101 #endif 00102 }
| Attachment & osg::AttachmentPtr::operator* | ( | void | ) | [inline] |
Reimplemented from osg::FieldContainerPtr.
Definition at line 105 of file OSGAttachmentPtrImpl.inl.
References osg::PThreadBase::getAspect(), osg::FieldContainerPtrBase::getElemP(), and osg::operator*().
00106 { 00107 #if 0 00108 return *((Attachment *) getElemP(Thread::getAspect())); 00109 #else 00110 return (Attachment &) Inherited::operator *(); 00111 #endif 00112 }
| Attachment & osg::AttachmentPtr::operator* | ( | void | ) | const [inline] |
Reimplemented from osg::FieldContainerPtr.
Definition at line 115 of file OSGAttachmentPtrImpl.inl.
References osg::PThreadBase::getAspect(), osg::FieldContainerPtrBase::getElemP(), and osg::operator*().
00116 { 00117 #if 0 00118 return *((Attachment *) getElemP(Thread::getAspect())); 00119 #else 00120 return (Attachment &) Inherited::operator *(); 00121 #endif 00122 }
| Attachment * osg::AttachmentPtr::getCPtr | ( | void | ) | [inline] |
Reimplemented from osg::FieldContainerPtr.
Definition at line 125 of file OSGAttachmentPtrImpl.inl.
References osg::PThreadBase::getAspect(), osg::getCPtr(), and osg::FieldContainerPtrBase::getElemP().
Referenced by osg::State::changeFrom(), osg::SkyBackground::drawFace(), osg::RenderAction::dropClipPlane(), and osg::RenderAction::dropLight().
00126 { 00127 #if 0 00128 return (Attachment *) getElemP(Thread::getAspect()); 00129 #else 00130 return (Attachment *) Inherited::getCPtr(); 00131 #endif 00132 }
| Attachment * osg::AttachmentPtr::getCPtr | ( | void | ) | const [inline] |
Reimplemented from osg::FieldContainerPtr.
Definition at line 135 of file OSGAttachmentPtrImpl.inl.
References osg::PThreadBase::getAspect(), osg::getCPtr(), and osg::FieldContainerPtrBase::getElemP().
00136 { 00137 #if 0 00138 return (Attachment *) getElemP(Thread::getAspect()); 00139 #else 00140 return (Attachment *) Inherited::getCPtr(); 00141 #endif 00142 }
| void osg::AttachmentPtr::operator= | ( | const AttachmentPtr & | source | ) | [inline] |
Definition at line 148 of file OSGAttachmentPtrImpl.inl.
00149 { 00150 // copy parts inherited from parent 00151 *(static_cast<Inherited *>(this)) = source; 00152 }
| void osg::AttachmentPtr::operator= | ( | const NullFieldContainerPtr & | source | ) | [inline] |
Reimplemented from osg::FieldContainerPtr.
Definition at line 155 of file OSGAttachmentPtrImpl.inl.
00156 { 00157 // copy parts inherited from parent 00158 *(static_cast<Inherited *>(this)) = source; 00159 }
| osg::FieldContainerPtr::OSG_PROPERTY_DECL | ( | Pointer | ) | [inherited] |
| void osg::FieldContainerPtr::beginEdit | ( | BitVector | whichField, | |
| UInt32 | origin | |||
| ) | const [inline, protected, inherited] |
| void osg::FieldContainerPtr::endEdit | ( | BitVector | whichField, | |
| UInt32 | origin | |||
| ) | const [inline, protected, inherited] |
Definition at line 584 of file OSGFieldContainerPtrImpl.inl.
References osg::FieldContainerPtr::changed(), and osg::FieldContainerPtr::endEditNotChanged().
Referenced by osg::endEditCP().
00585 { 00586 endEditNotChanged(whichField, origin); 00587 changed(whichField, origin); 00588 }
| void osg::FieldContainerPtr::changed | ( | BitVector | whichField, | |
| UInt32 | origin | |||
| ) | const [inline, protected, inherited] |
Definition at line 578 of file OSGFieldContainerPtrImpl.inl.
Referenced by osg::changedCP(), and osg::FieldContainerPtr::endEdit().
| void osg::FieldContainerPtr::endEditNotChanged | ( | BitVector | whichField, | |
| UInt32 | origin | |||
| ) | const [inline, protected, inherited] |
Definition at line 571 of file OSGFieldContainerPtrImpl.inl.
References osg::ChangeList::addChanged(), and osg::PThreadBase::getCurrentChangeList().
Referenced by osg::FieldContainerPtr::endEdit(), and osg::endEditNotChangedCP().
00573 { 00574 Thread::getCurrentChangeList()->addChanged(*this, whichField); 00575 }
| void osg::FieldContainerPtrBase::setParentFieldPos | ( | UInt16 | uiParentEPos | ) | [inline, inherited] |
Definition at line 201 of file OSGFieldContainerPtrImpl.inl.
References osg::FieldContainerPtrBase::_uiParentEPos.
Referenced by osg::SharePtrGraphOp::addAttachmentParent(), osg::SharePtrGraphOp::clearAttachmentParent(), osg::SharePtrGraphOp::compareFCs(), osg::Particles::setColors(), osg::Geometry::setColors(), osg::Surface::setControlPoints(), osg::Node::setCore(), osg::Geometry::setIndices(), osg::Geometry::setLengths(), osg::Particles::setNormals(), osg::Geometry::setNormals(), osg::Particles::setPositions(), osg::Geometry::setPositions(), osg::Geometry::setSecondaryColors(), osg::Particles::setSecPositions(), osg::Geometry::setTexCoords(), osg::Geometry::setTexCoords1(), osg::Geometry::setTexCoords2(), osg::Geometry::setTexCoords3(), osg::Geometry::setTexCoords4(), osg::Geometry::setTexCoords5(), osg::Geometry::setTexCoords6(), osg::Geometry::setTexCoords7(), osg::Surface::setTextureControlPoints(), and osg::Geometry::setTypes().
00202 { 00203 _uiParentEPos = uiParentEPos; 00204 }
| UInt16 osg::FieldContainerPtrBase::getParentFieldPos | ( | void | ) | const [inline, inherited] |
Definition at line 207 of file OSGFieldContainerPtrImpl.inl.
References osg::FieldContainerPtrBase::_uiParentEPos.
00208 { 00209 return _uiParentEPos; 00210 }
| Int32 osg::FieldContainerPtrBase::getRefCount | ( | void | ) | const [inline, inherited] |
Definition at line 216 of file OSGFieldContainerPtrImpl.inl.
References osg::FieldContainerPtrBase::_storeP, and osg::FieldContainerPtrBase::getRefCountP().
Referenced by osg::RemoteAspect::createCurrentStateChangeList().
00217 { 00218 if(_storeP == NULL) 00219 return 0; 00220 00221 return (*getRefCountP()); 00222 }
| UInt32 osg::FieldContainerPtrBase::getFieldContainerId | ( | void | ) | const [inline, inherited] |
Definition at line 225 of file OSGFieldContainerPtrImpl.inl.
References osg::FieldContainerPtrBase::getIdP().
Referenced by osg::RemoteAspect::_defaultChangedFunction(), osg::RemoteAspect::_defaultCreatedFunction(), osg::RemoteAspect::_defaultDestroyedFunction(), osg::ChangeList::addAddRefd(), osg::ChangeList::addChanged(), osg::VRMLWriteAction::addContainerUse(), osg::VRMLWriteAction::addNodeUse(), osg::ChangeList::addSubRefd(), osg::BINWriter::addToIdMap(), osg::RemoteAspect::createCurrentStateChangeList(), osg::BINLoader::createFieldContainers(), osg::BINWriter::doIndexFC(), osg::NodeCore::dump(), osg::Node::dump(), osg::Geometry::dump(), osg::Attachment::dump(), osg::VRMLWriteAction::getInfo(), osg::ClusterWindow::getNetwork(), osg::RenderAction::getOcclusionQuery(), osg::RemoteAspect::receiveSync(), osg::RemoteAspect::sendSync(), osg::OSGWriter::FCInfoHelper::setName(), osg::RenderAction::setOcclusionQuery(), osg::RenderAction::stop(), osg::FieldContainerFactory::unregisterFieldContainer(), and osg::TileLoadBalancer::updateSubtree().
00226 { 00227 return (*getIdP()); 00228 }
| UInt16 osg::FieldContainerPtrBase::getContainerSize | ( | void | ) | const [inline, inherited] |
Definition at line 231 of file OSGFieldContainerPtrImpl.inl.
References osg::FieldContainerPtrBase::_containerSize.
Referenced by osg::FieldContainerPtrBase::executeSync().
00232 { 00233 return _containerSize; 00234 }
| FieldContainer * osg::FieldContainerPtrBase::getBaseCPtr | ( | void | ) | const [inline, inherited] |
Definition at line 237 of file OSGFieldContainerPtrImpl.inl.
References osg::FieldContainerPtrBase::getFirstElemP().
00238 { 00239 return reinterpret_cast<FieldContainer *>(getFirstElemP()); 00240 }
| FieldContainer * osg::FieldContainerPtrBase::getAspectCPtr | ( | UInt32 | uiAspectId | ) | const [inline, inherited] |
Definition at line 243 of file OSGFieldContainerPtrImpl.inl.
References osg::FieldContainerPtrBase::getElemP().
Referenced by osg::QFCItem::expand(), osg::QFieldViewBase::getFieldPtr(), osg::QFieldEditorBase::getFieldPtr(), osg::getParentsField(), and osg::QFCItem::setup().
00244 { 00245 return reinterpret_cast<FieldContainer *>(getElemP(uiAspectId)); 00246 }
| bool osg::FieldContainerPtrBase::operator< | ( | const NullFieldContainerPtr & | ) | const [inline, inherited] |
| bool osg::FieldContainerPtrBase::operator< | ( | const FieldContainerPtrBase & | other | ) | const [inline, inherited] |
Definition at line 303 of file OSGFieldContainerPtrImpl.inl.
References osg::FieldContainerPtrBase::_storeP.
00305 { 00306 return _storeP < other._storeP; 00307 }
| bool osg::FieldContainerPtrBase::operator== | ( | const NullFieldContainerPtr & | other | ) | const [inline, inherited] |
Definition at line 288 of file OSGFieldContainerPtrImpl.inl.
References osg::FieldContainerPtrBase::_storeP.
00290 { 00291 return _storeP == NULL; 00292 }
| bool osg::FieldContainerPtrBase::operator== | ( | const FieldContainerPtrBase & | other | ) | const [inline, inherited] |
Definition at line 310 of file OSGFieldContainerPtrImpl.inl.
References osg::FieldContainerPtrBase::_storeP.
00312 { 00313 return _storeP == other._storeP; 00314 }
| bool osg::FieldContainerPtrBase::operator!= | ( | const NullFieldContainerPtr & | other | ) | const [inline, inherited] |
Definition at line 295 of file OSGFieldContainerPtrImpl.inl.
References osg::FieldContainerPtrBase::_storeP.
00297 { 00298 return _storeP != NULL; 00299 }
| bool osg::FieldContainerPtrBase::operator!= | ( | const FieldContainerPtrBase & | other | ) | const [inline, inherited] |
| bool osg::FieldContainerPtrBase::operator! | ( | void | ) | const [inline, inherited] |
Definition at line 324 of file OSGFieldContainerPtrImpl.inl.
References osg::FieldContainerPtrBase::_storeP.
00325 { 00326 return _storeP == NULL; 00327 }
| osg::FieldContainerPtrBase::operator FieldContainerPtrBase::unspecified_bool_type | ( | ) | const [inline, inherited] |
Definition at line 330 of file OSGFieldContainerPtrImpl.inl.
References osg::FieldContainerPtrBase::_storeP.
00331 { 00332 return !*this ? 0 : &FieldContainerPtrBase::_storeP; 00333 }
| void FieldContainerPtrBase::dump | ( | UInt32 | uiIndent = 0, |
|
| const BitVector | bvFlags = 0 | |||
| ) | const [inherited] |
Definition at line 82 of file OSGFieldContainerPtr.cpp.
References osg::FieldContainerPtrBase::_storeP, osg::FieldContainerPtrBase::getFirstElemP(), osg::FieldContainerPtrBase::getIdP(), osg::FieldContainerPtrBase::getRefCountP(), osg::indentLog(), PLOG, and osg::FCDumpFlags::RefCount.
Referenced by osg::blendImage(), osg::DVRVolumeTexture::changed(), osg::createComposedImage(), osg::SimpleMaterial::dump(), osg::Geometry::dump(), osg::DVRVolume::dump(), and osg::DVRLookupTable::dump().
00084 { 00085 if(this != NULL && _storeP != NULL) 00086 { 00087 indentLog(uiIndent, PLOG); 00088 PLOG << "FCPtr Dump :" << std::endl; 00089 00090 uiIndent += 4; 00091 00092 indentLog(uiIndent, PLOG); 00093 PLOG << "Id : " << std::dec << (*(getIdP())) << std::endl; 00094 00095 indentLog(uiIndent, PLOG); 00096 PLOG << "Storage : " 00097 << std::hex << (UInt32 *)getFirstElemP() 00098 << std::endl; 00099 00100 if(bvFlags & FCDumpFlags::RefCount) 00101 { 00102 indentLog(uiIndent, PLOG); 00103 PLOG << "RefCount : " << *(getRefCountP()) << std::endl; 00104 } 00105 00106 // dumpContent(); 00107 } 00108 else 00109 { 00110 PLOG << "FCPtr Dump : (NULL)" << std::endl; 00111 } 00112 }
| bool FieldContainerPtrBase::initialize | ( | void | ) | [static, protected, inherited] |
Definition at line 117 of file OSGFieldContainerPtr.cpp.
References osg::FieldContainerPtrBase::_pRefCountLock, osg::addRefP(), osg::ThreadManager::getLockPool(), SINFO, and osg::ThreadManager::the().
Referenced by osg::DVRVolume::draw(), osg::FieldContainerFactory::FieldContainerFactory(), and osg::DVRVolume::initializeClipObjects().
00118 { 00119 bool returnValue = false; 00120 ThreadManager *pManager = ThreadManager::the(); 00121 00122 SINFO << "OSGFieldContainerPtrBase init" << std::endl; 00123 00124 if(pManager != NULL) 00125 { 00126 _pRefCountLock = pManager->getLockPool("DSPTRRefCountLockPool"); 00127 00128 addRefP(_pRefCountLock); 00129 00130 if(_pRefCountLock != NULL) 00131 returnValue = true; 00132 } 00133 00134 return returnValue; 00135 }
| bool FieldContainerPtrBase::terminate | ( | void | ) | [static, protected, inherited] |
Definition at line 137 of file OSGFieldContainerPtr.cpp.
References osg::FieldContainerPtrBase::_pRefCountLock, SINFO, osg::subRefP(), and osg::ThreadManager::the().
Referenced by osg::FieldContainerFactory::FieldContainerFactory().
00138 { 00139 ThreadManager *pManager = ThreadManager::the(); 00140 00141 SINFO << "OSGFieldContainerPtrBase terminate" << std::endl; 00142 00143 if(pManager == NULL) 00144 return false; 00145 00146 subRefP(_pRefCountLock); 00147 00148 return true; 00149 }
| void osg::FieldContainerPtrBase::executeSync | ( | UInt32 | uiFromAspect, | |
| UInt32 | uiToAspect, | |||
| BitVector | whichField | |||
| ) | [inline, protected, inherited] |
Definition at line 1149 of file OSGFieldContainerPtrImpl.inl.
References osg::FieldContainer::changed(), osg::FieldContainer::executeSync(), osg::FieldContainerPtrBase::getContainerSize(), osg::FieldContainerPtrBase::getElemP(), osg::ChangedOrigin::Sync, osg::SyncInfo::syncMode, osg::SyncInfo::uiCopyOffset, and osg::SyncInfo::uiSyncInfo.
Referenced by osg::ChangeList::apply(), and osg::ChangeList::applyTo().
01152 { 01153 #if defined(OSG_FIXED_MFIELDSYNC) 01154 SyncInfo sInfo; 01155 01156 sInfo.syncMode = 0x0000; 01157 sInfo.uiSyncInfo = (uiFromAspect << 24) | (uiToAspect << 16); 01158 sInfo.uiCopyOffset = getContainerSize(); 01159 #endif 01160 01161 FieldContainer *pTo = ((FieldContainer *) getElemP(uiToAspect)); 01162 01163 #if !defined(OSG_FIXED_MFIELDSYNC) 01164 pTo->executeSync(*((FieldContainer *) getElemP(uiFromAspect)), 01165 whichField); 01166 #else 01167 pTo->executeSync(*((FieldContainer *) getElemP(uiFromAspect)), 01168 whichField, 01169 sInfo); 01170 #endif 01171 01172 pTo->changed(whichField, ChangedOrigin::Sync); 01173 }
| Int32 * osg::FieldContainerPtrBase::getRefCountP | ( | void | ) | [inline, protected, inherited] |
Definition at line 66 of file OSGFieldContainerPtrImpl.inl.
References osg::FieldContainerPtrBase::_storeP.
Referenced by osg::FieldContainerPtrBase::addRef(), osg::FieldContainerPtrBase::dump(), osg::FieldContainerPtrBase::getRefCount(), and osg::FieldContainerPtrBase::subRef().
| Int32 * osg::FieldContainerPtrBase::getRefCountP | ( | void | ) | const [inline, protected, inherited] |
Definition at line 72 of file OSGFieldContainerPtrImpl.inl.
References osg::FieldContainerPtrBase::_storeP.
| UInt32 * osg::FieldContainerPtrBase::getIdP | ( | void | ) | [inline, protected, inherited] |
Definition at line 78 of file OSGFieldContainerPtrImpl.inl.
References osg::FieldContainerPtrBase::_storeP.
Referenced by osg::FieldContainerPtrBase::deleteContainers(), osg::FieldContainerPtrBase::dump(), and osg::FieldContainerPtrBase::getFieldContainerId().
| UInt32 * osg::FieldContainerPtrBase::getIdP | ( | void | ) | const [inline, protected, inherited] |
Definition at line 84 of file OSGFieldContainerPtrImpl.inl.
References osg::FieldContainerPtrBase::_storeP.
| UInt8 * osg::FieldContainerPtrBase::getFirstElemP | ( | void | ) | [inline, protected, inherited] |
Definition at line 102 of file OSGFieldContainerPtrImpl.inl.
References osg::FieldContainerPtrBase::_storeP.
Referenced by osg::FieldContainerPtrBase::deleteContainers(), osg::FieldContainerPtrBase::dump(), osg::FieldContainerPtrBase::FieldContainerPtrBase(), osg::FieldContainerPtrBase::getBaseCPtr(), osg::ConstFieldContainerPtr::getCPtr(), osg::FieldContainerPtr::getCPtr(), osg::ConstFieldContainerPtr::operator*(), osg::FieldContainerPtr::operator*(), osg::ConstFieldContainerPtr::operator->(), osg::FieldContainerPtr::operator->(), osg::FieldContainerPtrBase::operator=(), and osg::FieldContainerPtrBase::setNull().
00103 { 00104 return _storeP; 00105 }
| UInt8 * osg::FieldContainerPtrBase::getFirstElemP | ( | void | ) | const [inline, protected, inherited] |
Definition at line 108 of file OSGFieldContainerPtrImpl.inl.
References osg::FieldContainerPtrBase::_storeP.
00109 { 00110 return _storeP; 00111 }
Definition at line 90 of file OSGFieldContainerPtrImpl.inl.
References osg::FieldContainerPtrBase::_containerSize, and osg::FieldContainerPtrBase::_storeP.
Referenced by osg::FieldContainerPtrBase::executeSync(), osg::FieldContainerPtrBase::getAspectCPtr(), osg::NodePtr::getCore(), osg::NodePtr::getCPtr(), osg::ConstFieldContainerPtr::getCPtr(), osg::FieldContainerPtr::getCPtr(), osg::CNodePtr::getCPtr(), getCPtr(), osg::AttachmentContainerPtr::getCPtr(), osg::CNodePtr::getNode(), osg::NodePtr::operator*(), osg::ConstFieldContainerPtr::operator*(), osg::FieldContainerPtr::operator*(), osg::CNodePtr::operator*(), operator*(), osg::AttachmentContainerPtr::operator*(), osg::NodePtr::operator->(), osg::ConstFieldContainerPtr::operator->(), osg::FieldContainerPtr::operator->(), osg::CNodePtr::operator->(), operator->(), and osg::AttachmentContainerPtr::operator->().
00091 { 00092 return (_storeP + (_containerSize * uiElemNum)); 00093 }
| UInt8 * osg::FieldContainerPtrBase::getElemP | ( | UInt32 | uiElemNum | ) | const [inline, protected, inherited] |
Definition at line 96 of file OSGFieldContainerPtrImpl.inl.
References osg::FieldContainerPtrBase::_containerSize, and osg::FieldContainerPtrBase::_storeP.
00097 { 00098 return (_storeP + (_containerSize * uiElemNum)); 00099 }
| Int32 osg::FieldContainerPtrBase::getRefCountOff | ( | void | ) | const [inline, protected, inherited] |
Definition at line 117 of file OSGFieldContainerPtrImpl.inl.
Referenced by osg::FieldContainerPtrBase::deleteContainers().
| Int32 osg::FieldContainerPtrBase::getIdOff | ( | void | ) | const [inline, protected, inherited] |
| Int32 osg::FieldContainerPtrBase::getFirstElemOff | ( | void | ) | const [inline, protected, inherited] |
| Int32 osg::FieldContainerPtrBase::getElemOff | ( | UInt32 | uiElemNum | ) | const [inline, protected, inherited] |
Definition at line 135 of file OSGFieldContainerPtrImpl.inl.
References osg::FieldContainerPtrBase::_containerSize.
Referenced by osg::FieldContainerPtrBase::FieldContainerPtrBase().
00136 { 00137 return (_containerSize * uiElemNum); 00138 }
| void osg::FieldContainerPtrBase::addRef | ( | void | ) | const [inline, protected, inherited] |
Definition at line 413 of file OSGFieldContainerPtrImpl.inl.
References osg::FieldContainerPtrBase::_pRefCountLock, osg::FieldContainerPtrBase::_storeP, osg::ChangeList::addAddRefd(), osg::LockPool::aquire(), osg::PThreadBase::getCurrentChangeList(), osg::FieldContainerPtrBase::getRefCountP(), and osg::LockPool::release().
Referenced by osg::addRefCP(), and osg::setRefdCP().
00414 { 00415 _pRefCountLock->aquire(_storeP); 00416 00417 (*getRefCountP())++; 00418 00419 _pRefCountLock->release(_storeP); 00420 00421 Thread::getCurrentChangeList()->addAddRefd( 00422 *(static_cast<const FieldContainerPtr *>(this))); 00423 }
| void osg::FieldContainerPtrBase::subRef | ( | void | ) | const [inline, protected, inherited] |
Definition at line 124 of file OSGFieldContainerPtrDepImpl.inl.
References osg::FieldContainerPtrBase::_pRefCountLock, osg::FieldContainerPtrBase::_storeP, osg::ChangeList::addSubRefd(), osg::LockPool::aquire(), osg::FieldContainerPtrBase::deleteContainers(), osg::PThreadBase::getCurrentChangeList(), osg::FieldContainerPtrBase::getRefCountP(), and osg::LockPool::release().
Referenced by osg::clearRefCP(), osg::setRefdCP(), and osg::subRefCP().
00125 { 00126 #if !defined(OSG_FIXED_MFIELDSYNC) 00127 _pRefCountLock->aquire(_storeP); 00128 00129 (*getRefCountP())--; 00130 00131 if((*getRefCountP()) <= 0) 00132 { 00133 _pRefCountLock->release(_storeP); 00134 00135 deleteContainers(); 00136 00137 // Clean up a little. 00138 const_cast<FieldContainerPtrBase*>(this)->_storeP = NULL; 00139 } 00140 else 00141 { 00142 _pRefCountLock->release(_storeP); 00143 00144 Thread::getCurrentChangeList()->addSubRefd( 00145 *(static_cast<const FieldContainerPtr *>(this))); 00146 } 00147 #else 00148 Thread::getCurrentChangeList()->addSubRefd( 00149 *(static_cast<const FieldContainerPtr *>(this))); 00150 #endif 00151 }
| void osg::FieldContainerPtrBase::deleteContainers | ( | void | ) | const [inline, protected, inherited] |
Definition at line 78 of file OSGFieldContainerPtrDepImpl.inl.
References osg::FieldContainerPtrBase::_containerSize, osg::FieldContainerPtrBase::_storeP, osg::ChangeList::addDestroyed(), osg::PThreadBase::getAspect(), osg::PThreadBase::getCurrentChangeList(), osg::FieldContainerPtrBase::getFirstElemP(), osg::FieldContainerPtrBase::getIdP(), osg::ThreadManager::getNumAspects(), osg::FieldContainerPtrBase::getRefCountOff(), and osg::FieldContainerFactory::the().
Referenced by osg::FieldContainerPtrBase::subRef().
00079 { 00080 // dump(0, FCDumpFlags::RefCount); 00081 00082 Thread::getCurrentChangeList()->addDestroyed(*getIdP()); 00083 00084 if (FieldContainerFactory::the()->unregisterFieldContainer( 00085 *((const FieldContainerPtr *) this))) 00086 { 00087 return; 00088 } 00089 00090 UInt8 *pTmp = getFirstElemP(); 00091 00092 ((FieldContainer *) pTmp)->onDestroy(); 00093 00094 #if defined(OSG_GV_BETA) && defined(OSG_DBG_MEM) 00095 00096 fprintf(stderr, "GV_MEM_FC_DBG : (%u) d (%p|%u)\n", 00097 Thread::getAspect(), 00098 pTmp, 00099 // ((FieldContainer *) pTmp)->getType().getCName(), 00100 ((FieldContainer *) pTmp)->getType().getId()); 00101 #endif 00102 00103 #if defined(OSG_FIXED_MFIELDSYNC) 00104 ((FieldContainer *) pTmp)->~FieldContainer(); 00105 #endif 00106 00107 for(UInt32 i = 0; i < ThreadManager::getNumAspects(); i++) 00108 { 00109 #if defined(OSG_FIXED_MFIELDSYNC) 00110 ((FieldContainer *) pTmp)->onDestroyAspect(*(getIdP()), i); 00111 #endif 00112 00113 #if !defined(OSG_FIXED_MFIELDSYNC) 00114 ((FieldContainer *) pTmp)->~FieldContainer(); 00115 #endif 00116 00117 pTmp += _containerSize; 00118 } 00119 00120 operator delete(_storeP + getRefCountOff()); 00121 }
| void osg::FieldContainerPtrBase::setNull | ( | void | ) | [inline, protected, inherited] |
Definition at line 426 of file OSGFieldContainerPtrImpl.inl.
References osg::FieldContainerPtrBase::_containerSize, osg::FieldContainerPtrBase::_storeP, osg::FieldContainerPtrBase::_uiParentEPos, osg::FieldContainerPtrBase::getFirstElemP(), and osg::FieldContainerPtrBase::InvalidParentEPos.
Referenced by osg::ConstFieldContainerPtr::operator=(), and osg::FieldContainerPtr::operator=().
00427 { 00428 _containerSize = 0; 00429 _uiParentEPos = InvalidParentEPos; 00430 _storeP = NULL; 00431 00432 #ifdef OSG_DEBUG_FCPTR 00433 _typedStoreP = reinterpret_cast<FieldContainer *>(getFirstElemP()); 00434 #endif 00435 }
friend class FieldContainer [friend] |
const UInt16 FieldContainerPtrBase::InvalidParentEPos = 0xFFFF [static, inherited] |
Definition at line 98 of file OSGFieldContainerPtrImpl.h.
Referenced by osg::FieldContainerPtrBase::FieldContainerPtrBase(), osg::FieldContainerPtrBase::operator=(), and osg::FieldContainerPtrBase::setNull().
UInt16 osg::FieldContainerPtrBase::_containerSize [protected, inherited] |
Definition at line 195 of file OSGFieldContainerPtrImpl.h.
Referenced by osg::FieldContainerPtrBase::deleteContainers(), osg::FieldContainerPtrBase::FieldContainerPtrBase(), osg::FieldContainerPtrBase::getContainerSize(), osg::FieldContainerPtrBase::getElemOff(), osg::FieldContainerPtrBase::getElemP(), osg::FieldContainerPtrBase::operator=(), osg::FieldContainerPtrBase::setNull(), and osg::FieldContainerPtrBase::~FieldContainerPtrBase().
UInt16 osg::FieldContainerPtrBase::_uiParentEPos [protected, inherited] |
Definition at line 196 of file OSGFieldContainerPtrImpl.h.
Referenced by osg::FieldContainerPtrBase::FieldContainerPtrBase(), osg::FieldContainerPtrBase::getParentFieldPos(), osg::FieldContainerPtrBase::operator=(), osg::FieldContainerPtrBase::setNull(), osg::FieldContainerPtrBase::setParentFieldPos(), and osg::FieldContainerPtrBase::~FieldContainerPtrBase().
UInt8* osg::FieldContainerPtrBase::_storeP [protected, inherited] |
Definition at line 197 of file OSGFieldContainerPtrImpl.h.
Referenced by osg::FieldContainerPtrBase::addRef(), osg::FieldContainerPtrBase::deleteContainers(), osg::FieldContainerPtrBase::dump(), osg::FieldContainerPtrBase::FieldContainerPtrBase(), osg::FieldContainerPtrBase::getElemP(), osg::FieldContainerPtrBase::getFirstElemP(), osg::FieldContainerPtrBase::getIdP(), osg::FieldContainerPtrBase::getRefCount(), osg::FieldContainerPtrBase::getRefCountP(), osg::FieldContainerPtrBase::operator unspecified_bool_type(), osg::FieldContainerPtrBase::operator!(), osg::FieldContainerPtrBase::operator!=(), osg::FieldContainerPtrBase::operator<(), osg::FieldContainerPtrBase::operator=(), osg::FieldContainerPtrBase::operator==(), osg::FieldContainerPtrBase::setNull(), osg::FieldContainerPtrBase::subRef(), and osg::FieldContainerPtrBase::~FieldContainerPtrBase().
1.5.5