140 virtual void commonInit();
159 virtual SoElement* copyMatchInfo()
const = 0;
164 SoElement* getNextInStack()
const {
return nextInStack; }
167 typedef uint16_t SoElementKeyType;
169 static SoElementKeyType createElementKey();
174 virtual SoElementKeyType getElementKey()
const
176 return badElementKey();
182 static SoElementKeyType badElementKey();
185 static void initElements();
186 static void exitElements();
189 inline bool isTrackingSetterGetterNodes()
const
191 return m_trackSetterGetterNodes;
194 virtual int getClassStackIndexInternal()
const = 0;
197 static void initClass();
198 static void exitClass();
201 static int maxElementKey() {
return s_nextElementKey; }
204 static int getNumStackIndices();
207 static SoType getIdFromStackIndex(
int stackIndex);
210 inline int getStackIndex()
const {
return stackIndex; }
213 void setStackIndex(
int index) { stackIndex = index; }
216 void setDepth(
int dpth) { depth = dpth; }
217 void setNext(
SoElement *nxt) { next = nxt; }
218 void setNextInStack(
SoElement *nxt) { nextInStack = nxt; }
219 void setNextFree(
SoElement *nxt) { nextFree = nxt; }
222 int getDepth()
const {
return depth; }
223 SoElement* getNext()
const {
return next; }
241 static const T* getConstElement(
SoState *state)
243 return static_cast<const T*
>(getConstElement(state, T::getClassTypeId(), T::getClassStackIndex()));
248 void setPopPriority(
unsigned short priority) {m_popPriority = priority ;}
249 unsigned short getPopPriority()
const {
return m_popPriority ; }
257 virtual void dyingReference() {} ;
264 inline SoType getInstanceTypeId()
const
297 static T* getElement(
SoState *state)
299 return static_cast<T*
>(getElement(state, T::getClassTypeId(), T::getClassStackIndex()));
311 void capture(
SoState *state)
const
313 if ( state->isCacheOpen() )
319 virtual void captureThis(
SoState *state)
const;
322 void setTypeId(
SoType id) { typeId = id; }
326 SoElement* getNextFree()
const {
return nextFree; }
328 inline void setPopped(
SbBool flag) { m_popped = (flag ==
TRUE); }
329 inline SbBool isPopped()
const {
return m_popped ; }
352 static int createStackIndex(
const SoType&
id);
355 inline void trackSetterGetterNodes(
bool flag)
357 m_trackSetterGetterNodes = flag;
382 static int classStackIndex;
385 static int nextStackIndex;
392 static SoType classTypeId;
397 unsigned short m_popPriority ;
404 bool m_trackSetterGetterNodes;
407 friend class SoCache;
408 friend class SoBoundingBoxCache;
409 friend class inventor::impl::SoGLCacheListImpl;
410 friend class SoGLViewingMatrixElement;
413 static SoElementKeyType s_nextElementKey;