---
name: "SoCacheElement"
section: "3"
platform: "linux"
package: "coin"
version: "1:4.0.10-1"
release: "Arch Linux 2026-11-01"
platforms: ["linux"]
url: "https://new.carta.tech/SoCacheElement"
---

# SoCacheElement(3)

The SoCacheElement class stores and manages the open caches.

## NAME

SoCacheElement - The **SoCacheElement** class stores and manages the open caches.

## SYNOPSIS

\#include \<Inventor/elements/SoCacheElement.h\>

Inherits **SoElement**.

### Public Member Functions

virtual void **init** (**SoState** \*state)\
 virtual void **push** (**SoState** \*state)\
 virtual void **pop** (**SoState** \*state, const **SoElement** \*prevTopElement)\
 **SoCache** \* **getCache** (void) const\
 virtual SbBool **matches** (const **SoElement** \*element) const\
 virtual **SoElement** \* **copyMatchInfo** (void) const\
 **SoCacheElement** \* **getNextCacheElement** (void) const\

Public Member Functions inherited from **SoElement** const **SoType** **getTypeId** (void) const\
 int **getStackIndex** (void) const\
 void **setDepth** (const int **depth**)\
 int **getDepth** (void) const\
 virtual void **print** (FILE \*file=stdout) const\
 virtual **~SoElement** ()\

### Static Public Member Functions

static **SoType** **getClassTypeId** (void)\
 static int **getClassStackIndex** (void)\
 static void \* **createInstance** (void)\
 static void **initClass** (void)\
 static void **set** (**SoState** \*const state, **SoCache** \*const cache)\
 static SbBool **anyOpen** (**SoState** \*const state)\
 static void **invalidate** (**SoState** \*const state)\
 static void **addElement** (**SoState** \*const state, const **SoElement** \*const element)\
 static void **addCacheDependency** (**SoState** \*const state, **SoCache** \*const cache)\
 static SbBool **setInvalid** (const SbBool newvalue)\
 static **SoCache** \* **getCurrentCache** (**SoState** \*const state)\

Static Public Member Functions inherited from **SoElement** static void **initClass** (void)\
 static **SoType** **getClassTypeId** (void)\
 static int **getClassStackIndex** (void)\
 static void **initElements** (void)\
 static int **getNumStackIndices** (void)\
 static **SoType** **getIdFromStackIndex** (const int **stackIndex**)\

### Protected Member Functions

virtual **~SoCacheElement** ()\

Protected Member Functions inherited from **SoElement** **SoElement** (void)\
 void **capture** (**SoState** \*const state) const\
 virtual void **captureThis** (**SoState** \*state) const\
 void **setTypeId** (const **SoType** **typeId**)\
 void **setStackIndex** (const int index)\
 **SoElement** \* **getNextInStack** (void) const\
 **SoElement** \* **getNextFree** (void) const\

### Additional Inherited Members

Static Protected Member Functions inherited from **SoElement** static **SoElement** \* **getElement** (**SoState** \*const state, const int **stackIndex**)\
 static const **SoElement** \* **getConstElement** (**SoState** \*const state, const int **stackIndex**)\
 static int **createStackIndex** (const **SoType** id)\

Protected Attributes inherited from **SoElement** **SoType** **typeId**\
 int **stackIndex**\
 int **depth**\

Static Protected Attributes inherited from **SoElement** static int **classStackIndex**\
 static **SoTypeList** \* **stackToType**\

## Detailed Description

The **SoCacheElement** class stores and manages the open caches.

## Constructor & Destructor Documentation

### SoCacheElement::~SoCacheElement (void ) \[protected\], \[virtual\]

Destructor.

## Member Function Documentation

### SoType SoCacheElement::getClassTypeId (void ) \[static\]

This static method returns the **SoType** object associated with objects of this class.

### int SoCacheElement::getClassStackIndex (void ) \[static\]

This static method returns the state stack index for the class.

### void \* SoCacheElement::createInstance (void ) \[static\]

*This API member is considered internal to the library, as it is not likely to be of interest to the application programmer.*\

 Creates a new instance of the class type corresponding to the **SoType** object.

### void SoCacheElement::initClass (void ) \[static\]

Initialize relevant common data for all instances, like the type system.

### void SoCacheElement::init (SoState \* state) \[virtual\]

This function initializes the element type in the given **SoState**. It is called for the first element of each enabled element type in **SoState** objects.

Reimplemented from **SoElement**.

### void SoCacheElement::push (SoState \* state) \[virtual\]

This method is called every time a new element is required in one of the stacks. This happens when a writable element is requested, using **SoState::getElement()** or indirectly **SoElement::getElement()**, and the depth of the current element is less than the state depth.

Override this method if your element needs to copy data from the previous top of stack. The **push()** method is called on the new element, and the previous element can be found using **SoElement::getNextInStack()**.

Reimplemented from **SoElement**.

### void SoCacheElement::pop (SoState \* state, const SoElement \* prevTopElement) \[virtual\]

This method is called when the state is popped, and the depth of the element is bigger than the current state depth. **pop()** is called on the new top of stack, and a pointer to the previous top of stack is passed in *prevTopElement*.

Override this method if you need to copy some state information from the previous top of stack.

Reimplemented from **SoElement**.

### void SoCacheElement::set (SoState \*const state, SoCache \*const cache) \[static\]

Sets the current cache. The cache is ref'ed before returning.

### SoCache \* SoCacheElement::getCache (void ) const

This method returns the cache, or NULL if there is no cache.

### SbBool SoCacheElement::anyOpen (SoState \*const state) \[static\]

This method returns TRUE if a cache is currently open.

### void SoCacheElement::invalidate (SoState \*const state) \[static\]

This method invalidates open caches. It should be called by uncacheable nodes.

### SbBool SoCacheElement::matches (const SoElement \* element) const \[virtual\]

**SoCacheElement** objects should not be compared because you obviously don't cache them in the cache.

Implements **SoElement**.

### SoElement \* SoCacheElement::copyMatchInfo (void ) const \[virtual\]

**SoCacheElement** objects should not be "copied" because you obviously don't cache them in the cache.

**See also**

SbBool **SoCacheElement::matches(const SoElement \* element) const**

Implements **SoElement**.

### SoCacheElement \* SoCacheElement::getNextCacheElement (void ) const

This method returns the next cache element. That is the next cache element pointing towards the bottom of the state.

### void SoCacheElement::addElement (SoState \*const state, const SoElement \*const element) \[static\]

This method adds *element* to the elements used lists of all the open caches in *state*.

### void SoCacheElement::addCacheDependency (SoState \*const state, SoCache \*const cache) \[static\]

This method creates dependencies on *cache* for all the open caches in *state*.

### SbBool SoCacheElement::setInvalid (const SbBool newvalue) \[static\]

This method returns the old invalidated bit value, and sets it to *newvalue*.

### SoCache \* SoCacheElement::getCurrentCache (SoState \*const state) \[static\]

This method returns the current cache. No cache dependencies are honored.

## Author

Generated automatically by Doxygen for Coin from the source code.
