#include <RixInterfaces.h>
Inheritance diagram for RixStorage:
Public Member Functions | |
virtual void * | Get (const char *key)=0 |
Get the data associated with the given key, or NULL if there is none. | |
virtual void | Set (const char *key, void *data, RixCleanupFunc cleanup=NULL)=0 |
Set the data associated with the given key, along with an optional cleanup function. | |
virtual void | Clear (const char *key)=0 |
Clear any data associated with the given key, calling its cleanup function (if any). | |
virtual void | Lock ()=0 |
Lock this object. (Unnecessary unless it's used for global storage.). | |
virtual void | Unlock ()=0 |
Unlock this object. | |
virtual int | GetVersion () const |
Get the version number of this interface. | |
Protected Member Functions | |
RixStorage () | |
Constructor is for internal use only. | |
Protected Attributes | |
int | m_version |
Version number of this interface. |
For example, a shader plugin might share per-thread data as follows:
RixStorage* storage = (RixStorage*) rslContext->GetRixInterface(k_RixThreadData); void* mydata = storage->Get("mydata"); if (mydata == NULL) { mydata = MakeData(); storage->Set("mydata", mydata, CleanupData); }
Per-thread storage is thread-safe, but per-frame storage must be locked:
RixStorage* storage = (RixStorage*) rslCtx->GetRixInterface(k_RixFrameData); storage->Lock(); void* myglobal = storage->Get("myglobal"); if (myglobal == NULL) { myglobal = MakeData(); storage->Set("myglobal", myglobal, CleanupData); } storage->Unlock();
A cleanup function has a prototype like the following:
void myCleanup(RixContext* context, void* data);
|
Constructor is for internal use only.
|
|
Clear any data associated with the given key, calling its cleanup function (if any).
|
|
Get the data associated with the given key, or NULL if there is none.
|
|
Get the version number of this interface. Different interfaces might have different version numbers in a given release. |
|
Lock this object. (Unnecessary unless it's used for global storage.).
|
|
Set the data associated with the given key, along with an optional cleanup function. Any previously associated data is discarded (calling its cleanup function, if any). The key is copied. |
|
Unlock this object.
|
|
Version number of this interface.
|