2
3
4
5
6
7
8
9
10
12#ifndef GIMBAL_IVARIANT_H
13#define GIMBAL_IVARIANT_H
19
20
21
23#define GBL_IVARIANT(instance) ((GblIVariant*)GblInstance_cast(GBL_INSTANCE(instance), GBL_IVARIANT_TYPE))
25#define GBL_IVARIANT_GET_CLASS(instance) (GBL_IVARIANT_CLASS(GblInstance_class(GBL_INSTANCE(instance))))
28#define GBL_IVARIANT_VALUE_VAR_ARG_MAX 4
36 GBL_IVARIANT_OP_FLAG_RELOCATABLE = 0x00001,
37 GBL_IVARIANT_OP_FLAG_CONSTRUCT_DEFAULT = 0x00002,
38 GBL_IVARIANT_OP_FLAG_CONSTRUCT_COPY = 0x00004,
39 GBL_IVARIANT_OP_FLAG_CONSTRUCT_MOVE = 0x00008,
40 GBL_IVARIANT_OP_FLAG_CONSTRUCT_VALUE_COPY = 0x00010,
41 GBL_IVARIANT_OP_FLAG_CONSTRUCT_VALUE_MOVE = 0x00020,
42 GBL_IVARIANT_OP_FLAG_CONSTRUCT_MASK = 0x0003e,
43 GBL_IVARIANT_OP_FLAG_SET_COPY = 0x00040,
44 GBL_IVARIANT_OP_FLAG_SET_MOVE = 0x00080,
45 GBL_IVARIANT_OP_FLAG_SET_VALUE_COPY = 0x00100,
46 GBL_IVARIANT_OP_FLAG_SET_VALUE_MOVE = 0x00200,
47 GBL_IVARIANT_OP_FLAG_SET_MASK = 0x003c0,
48 GBL_IVARIANT_OP_FLAG_GET_VALUE_COPY = 0x00400,
49 GBL_IVARIANT_OP_FLAG_GET_VALUE_PEEK = 0x00800,
50 GBL_IVARIANT_OP_FLAG_GET_VALUE_MOVE = 0x01000,
51 GBL_IVARIANT_OP_FLAG_GET_MASK = 0x01c00,
52 GBL_IVARIANT_OP_FLAG_VALUELESS_TYPE = 0x40000
55#define VARIANT GblVariant* pVariant
56#define CVARIANT const VARIANT
60 GBL_IVARIANT_OP_FLAGS supportedOps;
64 GBL_RESULT (*pFnConstruct)(
VARIANT, size_t argc, GblVariant* pArgs, GBL_IVARIANT_OP_FLAGS op);
65 GBL_RESULT (*pFnDestruct) (
VARIANT);
66 GBL_RESULT (*pFnSet) (
VARIANT, size_t argc, GblVariant* pArgs, GBL_IVARIANT_OP_FLAGS op);
67 GBL_RESULT (*pFnGet) (
VARIANT, size_t argc, GblVariant* pArgs, GBL_IVARIANT_OP_FLAGS op);
68 GBL_RESULT (*pFnCompare) (
CVARIANT,
const GblVariant* pOther,
int* pResult);
69 GBL_RESULT (*pFnSave) (
CVARIANT, GblStringBuffer* pString);
70 GBL_RESULT (*pFnLoad) (
VARIANT,
const GblStringBuffer* pString);
74
75
76
77
78
79
80
81
82
83
85 const GblIVariantVTable* pVTable;
88#define GBL_SELF_TYPE GblIVariantClass
89#define GBL_KEY const GblVariant* pKey
90#define GBL_VALUE GblVariant* pValue
109 const GblVariant* pOther,
#define GBL_BUILTIN_TYPE(prefix)
Returns a type from the macro prefix of a builtin type.
#define GBL_FORWARD_DECLARE_STRUCT(S)
#define GBL_INTERFACE_END
#define GBL_INTERFACE_DERIVE(...)
#define GBL_DECLARE_FLAGS(F)
#define GBL_IVARIANT_TYPE
#define GBL_IVARIANT_CLASS(klass)
#define GBL_IVARIANT_VALUE_VAR_ARG_MAX
Virtual method table for GblIVariantClass.