|
| #define | stTypeCast(name, v) ((SType_##name)(v)) |
| |
| #define | stPtrCast(name, v) ((SType_##name*)(v)) |
| |
| #define | stvarTypeId(v) (stvarType(v)->id) |
| |
| #define | stTypeId(name) STypeId_##name |
| |
| #define | stTypeSize(name) STypeSize_##name |
| |
| #define | stHasFlag(st, fname) (((st)->flags & stFlag(fname)) != 0) |
| |
| #define | stGetSize(st) ((st)->size) |
| |
| #define | stCheck(type, val) STypeCheck_##type(type, val) |
| |
| #define | stCheckPtr(type, ptr) STypeCheckPtr_##type(type, ptr) |
| |
| #define | stRvalAddr(type, rval) ((stStorageType(type)[1]) { rval }) |
| |
| #define | stType(name) (&stTypeInfo(name)) |
| |
| #define | stArg(type, val) STypeArg_##type(type, val) |
| |
| #define | stArgPtr(type, val) STypeArgPtr_##type(type, val) |
| |
| #define | stCheckedArg(type, val) STypeCheckedArg_##type(type, val) |
| |
| #define | stCheckedPtrArg(type, val) STypeCheckedPtrArg_##type(type, val) |
| |
| #define | stExt(name) (&_stie_##name) |
| |
| #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)) |
| |
| #define | stDestroy(type, pobj, ...) _stDestroy(stType(type), stArgPtr(type, pobj), opt_flags(__VA_ARGS__)) |
| |
| #define | stCmp(type, obj1, obj2, ...) _stCmp(stType(type), stArg(type, obj1), stArg(type, obj2), opt_flags(__VA_ARGS__)) |
| |
| #define | stCopy(type, pdest, src, ...) _stCopy(stType(type), stArgPtr(type, pdest), stArg(type, src), opt_flags(__VA_ARGS__)) |
| |
| #define | stHash(type, obj, ...) _stHash(stType(type), stArg(type, obj), opt_flags(__VA_ARGS__)) |
| |
| #define | stConvert(desttype, pdest, srctype, src, ...) |
| |
| #define | stDeclare(name) extern const STypeInfo _sti_##name |
| |
| #define | stDefine(name) const STypeInfo _sti_##name = |
| |
|
| typedef struct STypeInfo | STypeInfo |
| |
| typedef struct STypeInfoExt | STypeInfoExt |
| |
| typedef void(* | stDtorFunc) (stype st, stgeneric *gen, flags_t flags) |
| |
| typedef intptr(* | stCmpFunc) (stype st, stgeneric gen1, stgeneric gen2, flags_t flags) |
| |
| typedef uint32(* | stHashFunc) (stype st, stgeneric gen, flags_t flags) |
| |
| typedef void(* | stCopyFunc) (stype st, _stCopyDest_Anno_(st) stgeneric *dest, stgeneric src, flags_t flags) |
| |
| typedef bool(* | stConvertFunc) (stype destst, _stCopyDest_Anno_(destst) stgeneric *dest, stype srcst, stgeneric src, flags_t flags) |
| |
| typedef bool(* | stSerializeFunc) (stype st, stgeneric val, SerWriter *w) |
| |
| typedef bool(* | stDeserializeFunc) (stype st, stgeneric *val, SerReader *r) |
| |
Runtime type system and type descriptor infrastructure.
Definition in file stype.h.