### Global Memory Global Render Memory Availability LightWave® 6.0 Component Layout Header lwrender.h These globals allow plug-ins to allocate and share named chunks of memory. The memory comes from a pool managed by Layout. "Global Render Memory" is used during rendering and is freed automatically when rendering ends. "Global Memory" persists until the scene is cleared. Global Call
       LWGlobalPool *memfunc;
       memfunc = global( LWGLOBALPOOL_RENDER_GLOBAL, GFUSE_TRANSIENT );
       memfunc = global( LWGLOBALPOOL_GLOBAL, GFUSE_TRANSIENT );
The global function returns a pointer to an LWGlobalPool.
       typedef struct st_LWGlobalPool {
          LWMemChunk   (*first)  (void);
          LWMemChunk   (*next)   (LWMemChunk);
          const char * (*ID)     (LWMemChunk);
          int          (*size)   (LWMemChunk);
          LWMemChunk   (*find)   (const char *ID);
          LWMemChunk   (*create) (const char *ID, int size);
       } LWGlobalPool;
`mem = first()` Returns the first memory chunk in the pool. This and the `next` function allow you to traverse the entire list of memory chunks in the pool. Use them if you need to search for memory chunks using criteria more complex than just the chunk ID string. `mem = next( mem )` Returns the next memory block in the list. `name = ID( mem )` Returns the chunk identifier. This is the name string that was passed to `create`. `bytes = size( mem )` Returns the size in bytes of a memory chunk. `mem = find( name )` Returns the memory chunk with the given ID. Multiple chunks may be created with the same ID, so this returns the first one. `mem = create( name, size )` Creates a memory chunk with the given size and ID and returns a pointer to the memory. If you want the name string to uniquely identify the chunk, you should try to `find` a chunk with your ID before using the ID in `create`. Example This code fragment allocates a render memory chunk named "my memory".
       #include <lwserver.h>
       #include <lwhost.h>
       #define COUNT 100

       static char name[] = "my widget memory";
       LWGlobalPool *memfunc;
       LWMemChunk mem;
       int *p, i;

       memfunc = global( LWGLOBALPOOL_RENDER_GLOBAL, GFUSE_TRANSIENT );
       if ( !memfunc ) goto NoMemFunc;  /* global calls can fail */

       mem = memfunc->find( name );
       if ( !mem )
          mem = memfunc->create( name, COUNT * sizeof( int ));
       if ( !mem )
          goto ErrorNoMem;

       p = ( int * ) mem;
       for ( i = 0; i < COUNT; i++ ) {
          p[ i ] = ...