CX Framework
Cross-platform C utility framework
Loading...
Searching...
No Matches

Macros

#define stStored(st, storage)    (stHasFlag(st, PassPtr) ? stgeneric(ptr, (void*)(storage)) : _stStoredVal(st, storage))
 
#define stStoredPtr(st, storage)    (stHasFlag(st, PassPtr) ? &stgeneric(ptr, ((void*)(storage))) : (stgeneric*)((void*)(storage)))
 
#define stGenPtr(st, gen)   (stHasFlag(st, PassPtr) ? (gen).st_ptr : &(gen))
 

Detailed Description

Macros for loading and storing typed values from raw memory. These handle the distinction between pass-by-value types (stored inline) and pass-by-pointer types (stored as pointers).

Macro Definition Documentation

◆ stGenPtr

#define stGenPtr (   st,
  gen 
)    (stHasFlag(st, PassPtr) ? (gen).st_ptr : &(gen))

void* stGenPtr(stype st, stgeneric gen)

Get a pointer to the actual data from a generic container.

For pass-by-pointer types, extracts the pointer stored in the container. For pass-by-value types, returns the address of the container itself.

Parameters
stType descriptor
genGeneric container with value
Returns
Pointer to the actual data

Definition at line 1345 of file stype.h.

◆ stStored

#define stStored (   st,
  storage 
)     (stHasFlag(st, PassPtr) ? stgeneric(ptr, (void*)(storage)) : _stStoredVal(st, storage))

stgeneric stStored(stype st, void* storage)

Load a typed value from raw storage into a generic container.

Handles both inline storage (primitives) and pointer-based storage (objects, opaque). For pass-by-value types, reads the value directly from memory. For pass-by-pointer types, treats storage as containing a pointer to the actual value.

Parameters
stType descriptor
storagePointer to the stored value
Returns
Generic container holding the value

Example:

int32* array = ...;
stgeneric val = stStored(stType(int32), &array[5]);
#define stType(name)
Definition stype.h:822
#define stStored(st, storage)
Definition stype.h:1319

Definition at line 1319 of file stype.h.

◆ stStoredPtr

#define stStoredPtr (   st,
  storage 
)     (stHasFlag(st, PassPtr) ? &stgeneric(ptr, ((void*)(storage))) : (stgeneric*)((void*)(storage)))

stgeneric* stStoredPtr(stype st, void* storage)

Get a pointer to a stored value suitable for modification.

For pass-by-value types, returns a pointer directly to the storage location. For pass-by-pointer types, wraps the pointer in a generic container.

Parameters
stType descriptor
storagePointer to storage location
Returns
Pointer to generic container that can be used with type operations

Definition at line 1332 of file stype.h.