libGimbal 0.2.0
C17-Based Extended Standard Library and Cross-Language Runtime Framework
Loading...
Searching...
No Matches
gimbal_primitives.h
Go to the documentation of this file.
1/*! \file
2 * \brief GblPrimitiveClass abstract primitive base plus builtin types
3 * \ingroup meta
4 *
5 * \author Falco Girgis
6 */
7
8#ifndef GIMBAL_PRIMITIVES_H
9#define GIMBAL_PRIMITIVES_H
10
11#include "../types/gimbal_type.h"
12#include "../ifaces/gimbal_ivariant.h"
13
14#define GBL_NIL_TYPE (GBL_BUILTIN_TYPE(NIL)) //!< Builtin ID for nil GblVariant type
15#define GBL_BOOL_TYPE (GBL_BUILTIN_TYPE(BOOL)) //!< Builtin ID for boolean GblVariant type
16#define GBL_CHAR_TYPE (GBL_BUILTIN_TYPE(CHAR)) //!< Builtin ID for char GblVariant type
17#define GBL_UINT8_TYPE (GBL_BUILTIN_TYPE(UINT8)) //!< Builtin ID for uint8_t GblVariant type
18#define GBL_INT16_TYPE (GBL_BUILTIN_TYPE(INT16)) //!< Builtin ID for int16_t GblVariant type
19#define GBL_UINT16_TYPE (GBL_BUILTIN_TYPE(UINT16)) //!< Builtin ID for uint16_t GblVariant type
20#define GBL_INT32_TYPE (GBL_BUILTIN_TYPE(INT32)) //!< Builtin ID for int32_t GblVariant type
21#define GBL_UINT32_TYPE (GBL_BUILTIN_TYPE(UINT32)) //!< Builtin ID for uint32_t GblVariant type
22#define GBL_INT64_TYPE (GBL_BUILTIN_TYPE(INT64)) //!< Builtin ID for int64_t GblVariant type
23#define GBL_UINT64_TYPE (GBL_BUILTIN_TYPE(UINT64)) //!< Builtin ID for uint64_t GblVariant type
24#define GBL_FLOAT_TYPE (GBL_BUILTIN_TYPE(FLOAT)) //!< Builtin ID for float GblVariant type
25#define GBL_DOUBLE_TYPE (GBL_BUILTIN_TYPE(DOUBLE)) //!< Builtin ID for double GblVariant type
26#define GBL_STRING_TYPE (GBL_BUILTIN_TYPE(STRING)) //!< Builtin ID for string GblVariant type
27#define GBL_TYPE_TYPE (GBL_TYPEID(GblType)) //!< Builtin ID for ::GblType GblVariant type
28#define GBL_BITMASK_TYPE (GBL_TYPEID(GblBitMask))
29
30#define GblNil_type() GBL_NIL_TYPE
31#define GblBool_type() GBL_BOOL_TYPE
32#define GblChar_type() GBL_CHAR_TYPE
33#define GblUint8_type() GBL_UINT8_TYPE
34#define GblInt16_type() GBL_INT16_TYPE
35#define GblUint16_type() GBL_UINT16_TYPE
36#define GblInt32_type() GBL_INT32_TYPE
37#define GblUint32_type() GBL_UINT32_TYPE
38#define GblInt64_type() GBL_INT64_TYPE
39#define GblUint64_type() GBL_UINT64_TYPE
40#define GblFloat_type() GBL_FLOAT_TYPE
41#define GblDouble_type() GBL_DOUBLE_TYPE
42#define GblString_type() GBL_STRING_TYPE
43#define GblSize_type() GBL_SIZE_TYPE
44
45/*! \struct GblPrimitiveClass
46 * \extends GblStaticClass
47 * \implements GblIVariantClass
48 * \brief Static GblClass structure for any primitive tyes
49 *
50 * No public members.
51 */
52GBL_CLASS_BASE_EMPTY(GblPrimitive, GblStatic, GblIVariant)
53
54typedef uint64_t GblBitmask;
55
56GBL_EXPORT GblType GblType_type (void) GBL_NOEXCEPT;
57GBL_EXPORT GblType GblBitmask_type (void) GBL_NOEXCEPT;
58
59GBL_EXPORT GblType GblPrimitive_register (const char* pName,
60 size_t classSize,
61 size_t classPrivateSize,
62 const GblIVariantVTable* pIVTable,
63 GblFlags typeFlags) GBL_NOEXCEPT;
64
65GBL_EXPORT GblType GblPrimitive_registerBuiltin
66 (size_t index,
67 const char* pName,
68 size_t classSize,
69 size_t classPrivateSize,
70 const GblIVariantVTable* pIVTable,
71 GblFlags typeFlags) GBL_NOEXCEPT;
72
73
74#endif // GIMBAL_PRIMITIVES_H
#define GBL_BUILTIN_TYPE(prefix)
Returns a type from the macro prefix of a builtin type.
#define GBL_NOEXCEPT
#define GBL_TYPEID(instanceStruct)
#define GBL_CLASS_BASE_EMPTY(...)
#define GBL_EXPORT
#define GBL_SIZE_TYPE
#define GBL_NIL_TYPE
Builtin ID for nil GblVariant type.
#define GBL_UINT64_TYPE
Builtin ID for uint64_t GblVariant type.
#define GBL_CHAR_TYPE
Builtin ID for char GblVariant type.
#define GBL_UINT16_TYPE
Builtin ID for uint16_t GblVariant type.
#define GBL_FLOAT_TYPE
Builtin ID for float GblVariant type.
#define GBL_INT16_TYPE
Builtin ID for int16_t GblVariant type.
#define GBL_STRING_TYPE
Builtin ID for string GblVariant type.
#define GBL_BOOL_TYPE
Builtin ID for boolean GblVariant type.
#define GBL_INT64_TYPE
Builtin ID for int64_t GblVariant type.
#define GBL_DOUBLE_TYPE
Builtin ID for double GblVariant type.
#define GBL_INT32_TYPE
Builtin ID for int32_t GblVariant type.
#define GBL_UINT8_TYPE
Builtin ID for uint8_t GblVariant type.
#define GBL_UINT32_TYPE
Builtin ID for uint32_t GblVariant type.
uint32_t GblFlags
Standard-sized flags type, 32-bits across platforms.
uintptr_t GblType
Meta Type UUID.
Definition gimbal_type.h:52