CX Framework
Cross-platform C utility framework
Loading...
Searching...
No Matches
Variant Type Checking and Access

Macros

#define stvarIs(svar, type)   _stvarIs(svar, stType(type))
 
#define stvarObj(class, svar)   (objDynCast(class, stvarObjInst(svar)))
 

Functions

string stvarString (stvar *svar)
 
string * stvarStringPtr (stvar *svar)
 
ObjInststvarObjInst (stvar *svar)
 
ObjInst ** stvarObjInstPtr (stvar *svar)
 

Detailed Description

Functions and macros for checking variant types and extracting values.

Macro Definition Documentation

◆ stvarIs

#define stvarIs (   svar,
  type 
)    _stvarIs(svar, stType(type))

bool stvarIs(stvar *svar, type)

Check if a variant contains a value of the specified type.

Compares the variant's runtime type descriptor against the specified compile-time type. Returns false for NULL pointers.

Parameters
svarPointer to variant to check
typeType name to check for (e.g., int32, string)
Returns
true if variant contains the specified type, false otherwise

Example:

stvar v = stvar(int32, 42);
if (stvarIs(&v, int32)) {
int32 val = v.data.st_int32;
}
#define stvarIs(svar, type)
Definition stvar.h:267
#define stvar(typen, val)
Definition stvar.h:153

Definition at line 267 of file stvar.h.

◆ stvarObj

#define stvarObj (   class,
  svar 
)    (objDynCast(class, stvarObjInst(svar)))

ClassName* stvarObj(ClassName, stvar *svar)

Extract typed object from variant with runtime type checking.

Retrieves the object from the variant and performs a dynamic cast to the specified class type. Returns NULL if the variant does not contain an object or if the object is not compatible with the target class.

Parameters
classTarget class name (e.g., MyClass)
svarPointer to variant
Returns
Typed object pointer, or NULL if not compatible

Example:

stvar v = stvar(object, myTestObj);
TestClass *tc = stvarObj(TestClass, &v);
if (tc) {
// Use typed object
}
#define stvarObj(class, svar)
Definition stvar.h:386

Definition at line 386 of file stvar.h.

Function Documentation

◆ stvarObjInst()

ObjInst * stvarObjInst ( stvar svar)
inline

ObjInst* stvarObjInst(stvar *svar)

Extract object instance from variant if it contains an object.

Returns the untyped object pointer if the variant contains an object. For typed access, use stvarObj() macro instead.

Parameters
svarPointer to variant
Returns
Object instance pointer if variant contains object, NULL otherwise

Example:

stvar v = stvar(object, myObj);
ObjInst *obj = stvarObjInst(&v);
if (obj) {
// Use untyped object
}
ObjInst * stvarObjInst(stvar *svar)
Definition stvar.h:343

Definition at line 343 of file stvar.h.

References stvarIs.

◆ stvarObjInstPtr()

ObjInst ** stvarObjInstPtr ( stvar svar)
inline

ObjInst** stvarObjInstPtr(stvar *svar)

Get pointer to object instance field within variant.

Returns a pointer to the object field inside the variant's data union. Returns NULL if the variant does not contain an object.

Parameters
svarPointer to variant
Returns
Pointer to object field, or NULL if not an object variant

Definition at line 359 of file stvar.h.

References stvarIs.

◆ stvarString()

string stvarString ( stvar svar)
inline

string stvarString(stvar *svar)

Extract string value from variant if it contains a string.

Convenience accessor that checks the type and returns the string value in one operation. Returns NULL if the variant does not contain a string or if the pointer is NULL.

Parameters
svarPointer to variant
Returns
String value if variant contains string, NULL otherwise

Example:

stvar v = stvar(string, _S"hello");
string s = stvarString(&v);
if (s) {
// Use string
}
#define _S
Creates a static ASCII string from a string literal.
Definition strbase.h:392
string stvarString(stvar *svar)
Definition stvar.h:292

Definition at line 292 of file stvar.h.

References stvarIs.

◆ stvarStringPtr()

string * stvarStringPtr ( stvar svar)
inline

string* stvarStringPtr(stvar *svar)

Get pointer to string value within variant.

Returns a pointer to the string field inside the variant's data union, allowing modification of the stored string. Returns NULL if the variant does not contain a string.

Parameters
svarPointer to variant
Returns
Pointer to string field, or NULL if not a string variant

Example:

stvar v = stvar(string, _S"hello");
string *ps = stvarStringPtr(&v);
if (ps) {
strAppend(ps, _S" world");
}
bool strAppend(strhandle io, strref s)
string * stvarStringPtr(stvar *svar)
Definition stvar.h:318

Definition at line 318 of file stvar.h.

References stvarIs.