|
CX Framework
Cross-platform C utility framework
|
Runtime type system and type descriptor infrastructure. More...
#include <cx/debug/assert.h>#include <cx/platform/base.h>#include <cx/platform/cpp.h>#include <cx/utils/macros/optarg.h>#include <cx/utils/macros/salieri.h>#include <cx/utils/macros/unused.h>#include <stdbool.h>#include <stddef.h>#include <stdint.h>#include <string.h>Go to the source code of this file.
Macros | |
| #define | stTypeCast(name, v) ((SType_##name)(v)) |
| #define | stPtrCast(name, v) ((SType_##name*)(v)) |
| #define | stTypeId(name) STypeId_##name |
| #define | stTypeSize(name) STypeSize_##name |
| #define | stHasFlag(st, fname) ((st >> 8) & stFlag(fname)) |
| #define | stGetId(st) (st & 0xff) |
| #define | stGetFlags(st) ((st >> 8) & 0xff) |
| #define | stGetSize(st) (st >> 16) |
| #define | stTypeFlags(name) STypeFlags_##name |
| #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) stType_##name |
| #define | stFullType(name) stFullType_##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 | 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(stFullType(type), stArgPtr(type, pobj), opt_flags(__VA_ARGS__)) |
| #define | stCmp(type, obj1, obj2, ...) _stCmp(stFullType(type), stArg(type, obj1), stArg(type, obj2), opt_flags(__VA_ARGS__)) |
| #define | stCopy(type, pdest, src, ...) _stCopy(stFullType(type), stArgPtr(type, pdest), stArg(type, src), opt_flags(__VA_ARGS__)) |
| #define | stHash(type, obj, ...) _stHash(stFullType(type), stArg(type, obj), opt_flags(__VA_ARGS__)) |
| #define | stConvert(desttype, pdest, srctype, src, ...) |
Typedefs | |
| 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) |
Enumerations | |
| enum | STYPE_OPS_FLAGS { ST_CaseInsensitive = 0x00000001 , ST_Equality = 0x00000002 , ST_Overflow = 0x00000004 , ST_Lossless = 0x00000008 } |
Functions | |
| bool | stEq (stype sta, stype stb) |
Runtime type system and type descriptor infrastructure.
Definition in file stype.h.