2
3
4
5
6
7
8
9
10
11#ifndef GIMBAL_IVARIANT_H
12#define GIMBAL_IVARIANT_H
18
19
20
22#define GBL_IVARIANT(instance) ((GblIVariant*)GblInstance_cast(GBL_INSTANCE(instance), GBL_IVARIANT_TYPE))
23#define GBL_IVARIANT_CLASS(klass) ((GblIVariantClass*)GblClass_cast(GBL_CLASS
(klass), GBL_IVARIANT_TYPE))
24#define GBL_IVARIANT_GET_CLASS(instance) (GBL_IVARIANT_CLASS(GblInstance_class(GBL_INSTANCE(instance))))
27#define GBL_IVARIANT_VALUE_VAR_ARG_MAX 4
35 GBL_IVARIANT_OP_FLAG_RELOCATABLE = 0x00001,
36 GBL_IVARIANT_OP_FLAG_CONSTRUCT_DEFAULT = 0x00002,
37 GBL_IVARIANT_OP_FLAG_CONSTRUCT_COPY = 0x00004,
38 GBL_IVARIANT_OP_FLAG_CONSTRUCT_MOVE = 0x00008,
39 GBL_IVARIANT_OP_FLAG_CONSTRUCT_VALUE_COPY = 0x00010,
40 GBL_IVARIANT_OP_FLAG_CONSTRUCT_VALUE_MOVE = 0x00020,
41 GBL_IVARIANT_OP_FLAG_CONSTRUCT_MASK = 0x0003e,
42 GBL_IVARIANT_OP_FLAG_SET_COPY = 0x00040,
43 GBL_IVARIANT_OP_FLAG_SET_MOVE = 0x00080,
44 GBL_IVARIANT_OP_FLAG_SET_VALUE_COPY = 0x00100,
45 GBL_IVARIANT_OP_FLAG_SET_VALUE_MOVE = 0x00200,
46 GBL_IVARIANT_OP_FLAG_SET_MASK = 0x003c0,
47 GBL_IVARIANT_OP_FLAG_GET_VALUE_COPY = 0x00400,
48 GBL_IVARIANT_OP_FLAG_GET_VALUE_PEEK = 0x00800,
49 GBL_IVARIANT_OP_FLAG_GET_VALUE_MOVE = 0x01000,
50 GBL_IVARIANT_OP_FLAG_GET_MASK = 0x01c00,
51 GBL_IVARIANT_OP_FLAG_VALUELESS_TYPE = 0x40000
54#define VARIANT GblVariant* pVariant
55#define CVARIANT const VARIANT
59 GBL_IVARIANT_OP_FLAGS supportedOps;
63 GBL_RESULT (*pFnConstruct)(
VARIANT, size_t argc, GblVariant* pArgs, GBL_IVARIANT_OP_FLAGS op);
64 GBL_RESULT (*pFnDestruct) (
VARIANT);
65 GBL_RESULT (*pFnSet) (
VARIANT, size_t argc, GblVariant* pArgs, GBL_IVARIANT_OP_FLAGS op);
66 GBL_RESULT (*pFnGet) (
VARIANT, size_t argc, GblVariant* pArgs, GBL_IVARIANT_OP_FLAGS op);
67 GBL_RESULT (*pFnCompare) (
CVARIANT,
const GblVariant* pOther,
int* pResult);
68 GBL_RESULT (*pFnSave) (
CVARIANT, GblStringBuffer* pString);
69 GBL_RESULT (*pFnLoad) (
VARIANT,
const GblStringBuffer* pString);
73
74
75
76
77
78
79
80
81
82
84 const GblIVariantVTable* pVTable;
87#define GBL_SELF_TYPE GblIVariantClass
88#define GBL_KEY const GblVariant* pKey
89#define GBL_VALUE GblVariant* pValue
108 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.