CX Framework
Cross-platform C utility framework
Loading...
Searching...
No Matches
stvar.h File Reference

Variant type containers and type-safe variadic argument support. More...

#include <cx/cx.h>
#include <cx/stype/stype.h>

Go to the source code of this file.

Data Structures

struct  stvlist
 

Macros

#define stvarInit(typen, val)   { .data = { .st_##typen = val }, .type = stType(typen) }
 
#define stvar(typen, val)   ((stvar) { .data = stArg(typen, val), .type = stType(typen) })
 
#define stvNone   ((stvar) { .type = stType(none) })
 
#define stvarIs(svar, type)   _stvarIs(svar, stType(type))
 
#define stvarObj(class, svar)   (objDynCast(class, stvarObjInst(svar)))
 
#define stvlInitSA(list, vararray)   _stvlInitSA(list, (vararray).a)
 
#define stvlNext(list, type, pvar)   _stvlNext(list, stCheckedPtrArg(type, pvar))
 
#define stvlNextPtr(list)   _stvlNextPtr(list, stType(ptr))
 
#define stvlNextObj(list, class)   objDynCast(class, (ObjInst*)_stvlNextPtr(list, stType(object)))
 

Typedefs

typedef struct stvlist stvlist
 

Functions

void stvarDestroy (stvar *stv)
 
void stvarCopy (stvar *dvar, stvar svar)
 
string stvarString (stvar *svar)
 
string * stvarStringPtr (stvar *svar)
 
ObjInststvarObjInst (stvar *svar)
 
ObjInst ** stvarObjInstPtr (stvar *svar)
 
void stvlInit (stvlist *list, int count, stvar *vars)
 
void stvlRewind (stvlist *list)
 

Detailed Description

Variant type containers and type-safe variadic argument support.

Definition in file stvar.h.