 |
TEMU
4.4
The Terma Emulator
|
Go to the documentation of this file.
9 #ifndef TEMU_OBJSYS_C_H
10 #define TEMU_OBJSYS_C_H
12 #include "temu-c/Support/Attributes.h"
13 #include "temu-c/Support/Temu2Compat.h"
14 #include "temu-c/Support/Temu3Compat.h"
25 #define TEMU_PLUGIN_INIT extern "C" TEMU_API void temu_pluginInit(void)
27 #define TEMU_PLUGIN_INIT TEMU_API void temu_pluginInit(void)
30 #if defined(__has_attribute
)
31 #if __has_attribute
(annotate)
32 #define TEMU_NO_WRAP __attribute__((annotate("temu-no-wrap")))
37 #if (__cplusplus
< 201103L
) && !defined(nullptr)
46 #ifndef TEMU_BUFF_DEFINED
47 #define TEMU_BUFF_DEFINED
55 #ifndef TEMU_COMPONENT_DEFINED
56 #define TEMU_COMPONENT_DEFINED
142 } temu_IfaceRefArray;
150 TEMU_API temu_IfaceRefArray temu_ifaceRefArrayAlloc(
unsigned Reserve);
185 TEMU_API temu_IfaceRef temu_ifaceRefArrayGet(temu_IfaceRefArray *Arr,
194 #define TEMU_IFACE_REFERENCE_TYPE(N)
204 static inline N##IfaceRefArray N##IfaceRefArrayAlloc(unsigned Reserve)
206 temu_IfaceRefArray Arr = temu_ifaceRefArrayAlloc(Reserve);
207 N##IfaceRefArray Res;
209 Res.Reserved = Arr.Reserved;
210 Res.Ifaces = (N##IfaceRef *)Arr.Ifaces;
213 static inline void N##IfaceRefArrayDispose(N##IfaceRefArray *Arr)
215 temu_ifaceRefArrayDispose((temu_IfaceRefArray *)Arr);
217 static inline void N##IfaceRefArrayPush2(N##IfaceRefArray *Arr,
218 temu_Object_ *Obj, void *Iface)
220 temu_ifaceRefArrayPush2((temu_IfaceRefArray *)Arr, Obj, Iface);
222 static inline void N##IfaceRefArrayPush(N##IfaceRefArray *Arr,
225 temu_IfaceRef Iface2;
226 Iface2.Obj = Iface.Obj;
227 Iface2.Iface = (void *)Iface.Iface;
229 temu_ifaceRefArrayPush((temu_IfaceRefArray *)Arr, Iface2);
231 static inline unsigned N##IfaceRefArraySize(N##IfaceRefArray *Arr)
235 static inline void N##IfaceRefArrayPop(N##IfaceRefArray *Arr)
240 #define TEMU_DYN_ARRAY_TYPE(T, P)
246 static inline temu_##P##Array TEMU_MAYBE_UNUSED temu_##P##ArrayAlloc(
252 Arr.Reserved = Reserve;
253 Arr.Values = (T *)calloc(Reserve, sizeof(T));
257 static inline void TEMU_MAYBE_UNUSED temu_##P##ArrayPush(
258 temu_##P##Array *Arr, T Val)
260 if (Arr->Reserved >= Arr->Size) {
261 T *NewValues = (T *)realloc(Arr->Values, Arr->Reserved * 2
);
263 Arr->Values = NewValues;
268 Arr->Values[Arr->Size++] = Val;
270 static inline unsigned TEMU_MAYBE_UNUSED temu_##P##ArraySize(
271 temu_##P##Array *Arr)
275 static inline void TEMU_MAYBE_UNUSED temu_##P##ArrayPop(
276 temu_##P##Array *Arr)
300 typedef enum temu_Type {
408 temu_IfaceRef IfaceRef;
409 temu_IfaceRefArray IfaceRefArray;
436 #define TEMU_NULL_ARG
480 TEMU_API temu_Dict *temu_dictCreate(
void);
508 TEMU_API temu_Propval temu_dictGetValue(temu_Dict *Dict,
const char *Name);
540 TEMU_API temu_Vector temu_vecCreate(temu_Type Typ);
571 TEMU_API size_t temu_vecGetSize(temu_Vector *Vec);
579 TEMU_API temu_List temu_listCreate(temu_Type Typ);
610 TEMU_API temu_Propval temu_listRemoveHead(temu_List *List);
618 TEMU_API temu_Propval temu_listRemoveTail(temu_List *List);
626 TEMU_API temu_ListNode *temu_listGetHead(temu_List *List);
634 TEMU_API temu_ListNode *temu_listGetTail(temu_List *List);
642 TEMU_API temu_ListNode *temu_listGetNext(temu_ListNode *Node);
650 TEMU_API temu_ListNode *temu_listGetPrev(temu_ListNode *Node);
658 TEMU_API temu_Propval temu_listNodeGetVal(temu_ListNode *Node);
660 #ifdef PROP_ASSERTS_ENABLED
661 #define PROP_ASSERT(p, t) assert(p.Typ == t && "invalid property type")
663 #define PROP_ASSERT(p, t)
671 #define PROP_VAL_INITIALIZER(typ, suffix, typetag, valtag)
672 static inline temu_Propval temu_makeProp##suffix(typ val)
679 static inline typ temu_propValue##suffix(temu_Propval pv)
731 TEMU_API temu_Propref temu_getPropref(
const temu_Object_ *Obj,
732 const char *PropName);
788 TEMU_API temu_PropAccessor temu_getPropAccessor(temu_Object *Obj,
789 const char *PropName,
802 TEMU_API temu_PropName temu_getPropName(
const temu_Object_ *Obj,
803 const char *PropName);
835 TEMU_API temu_Type temu_getPropType(
const temu_Object_ *Obj,
836 const char *PropName);
899 TEMU_API int64_t temu_asInteger(temu_Propval Pv);
907 TEMU_API uint64_t temu_asUnsigned(temu_Propval Pv);
925 TEMU_API temu_Propval temu_getValue(temu_Object_ *Obj,
const char *PropName,
936 TEMU_API uint8_t temu_getValueU8(temu_Object_ *Obj,
const char *PropName,
947 TEMU_API uint16_t temu_getValueU16(temu_Object_ *Obj,
const char *PropName,
958 TEMU_API uint32_t temu_getValueU32(temu_Object_ *Obj,
const char *PropName,
969 TEMU_API uint64_t temu_getValueU64(temu_Object_ *Obj,
const char *PropName,
980 TEMU_API int8_t temu_getValueI8(temu_Object_ *Obj,
const char *PropName,
991 TEMU_API int16_t temu_getValueI16(temu_Object_ *Obj,
const char *PropName,
1002 TEMU_API int32_t temu_getValueI32(temu_Object_ *Obj,
const char *PropName,
1013 TEMU_API int64_t temu_getValueI64(temu_Object_ *Obj,
const char *PropName,
1026 TEMU_API temu_Propval temu_readValue(temu_Object_ *Obj,
const char *PropName,
1042 TEMU_API uint8_t temu_readValueU8(temu_Object_ *Obj,
const char *PropName,
1058 TEMU_API uint16_t temu_readValueU16(temu_Object_ *Obj,
const char *PropName,
1074 TEMU_API uint32_t temu_readValueU32(temu_Object_ *Obj,
const char *PropName,
1090 TEMU_API uint64_t temu_readValueU64(temu_Object_ *Obj,
const char *PropName,
1106 TEMU_API int8_t temu_readValueI8(temu_Object_ *Obj,
const char *PropName,
1122 TEMU_API int16_t temu_readValueI16(temu_Object_ *Obj,
const char *PropName,
1138 TEMU_API int32_t temu_readValueI32(temu_Object_ *Obj,
const char *PropName,
1154 TEMU_API int64_t temu_readValueI64(temu_Object_ *Obj,
const char *PropName,
1378 TEMU_API temu_Class *temu_registerClass(
const char *ClsName,
1379 temu_ObjectCreateFunc Create,
1380 temu_ObjectDisposeFunc Dispose);
1402 TEMU_API
void temu_addProperty(temu_Class *Cls,
const char *PropName,
1403 int Offset, temu_Type Typ,
int Count,
1404 temu_PropWriter Wr =
nullptr,
1405 temu_PropReader Rd =
nullptr,
1406 const char *Doc =
"");
1427 TEMU_API
void temu_addProperty(temu_Class *Cls,
const char *PropName,
1428 int Offset, temu_Type Typ,
int Count,
1429 temu_PropWriter Wr, temu_PropReader Rd,
1610 TEMU_API
void temu_addInterface(temu_Class *Cls,
const char *IfaceName,
1611 const char *IfaceType,
void *Iface,
1612 int DeprecatedParam = 0,
const char *Doc =
"");
1623 TEMU_API
void *temu_getInterface(temu_Object_ *Obj,
const char *IfaceName,
1627 TEMU_API
void temu_addInterface(temu_Class *Cls,
1629 const char *IfaceName,
const char *IfaceType,
1630 void *Iface,
int DeprecatedParam,
1633 TEMU_API
void *temu_getInterface(temu_Object_ *Obj,
const char *IfaceName,
1646 TEMU_API temu_IfaceRef temu_getInterfaceRef(temu_Object_ *Obj,
1647 const char *IfaceName,
int Idx);
1730 #define TEMU_QUAL_NONE 0
1731 #define TEMU_QUAL_CPU 1
1732 #define TEMU_QUAL_MACHINE 2
1733 #define TEMU_QUAL_MEMORY 4
1734 #define TEMU_QUAL_COMPONENT 5
1735 #define TEMU_QUAL_CLOCK 6
1739 #define TEMU_QUAL_USER 65536
1839 TEMU_API temu_Object_ *temu_createObject(
const char *ClsName,
1840 const char *ObjName,
1841 const temu_CreateArg *Args);
1856 TEMU_API temu_Class *temu_classForName(
const char *ClsName);
1872 TEMU_API temu_Class *temu_classForObject(
const temu_Object_ *Obj);
1929 TEMU_API temu_Object_ *temu_objectForName(
const char *Name);
2059 TEMU_API temu_Object_ **temu_getProcessors(
void);
2066 TEMU_API size_t temu_getProcessorCount(
void);
2074 TEMU_API temu_Component **temu_getComponents(
void);
2081 TEMU_API size_t temu_getComponentCount(
void);
2098 temu_Object_ *B,
const char *IfaceName);
2199 TEMU_API temu_Propval temu_snapshotGetValue(
void *Ctxt,
const char *Name,
2210 TEMU_API temu_Propval temu_checkpointGetValue(
void *Ctxt,
const char *Name,
2260 void (*
serialise)(
void *Obj,
const char *BaseName,
void *Ctxt);
2297 #define TEMU_OBJECT_IFACE_TYPE "ObjectIface"
2416 TEMU_API temu_Propval temu_readProp(temu_Object_ *Obj,
const char *Name,
2424 TEMU_API uint64_t temu_getValueUnsigned(temu_Object_ *Obj,
const char *PropName,
2431 TEMU_API int64_t temu_getValueSigned(temu_Object_ *Obj,
const char *PropName,
2446 TEMU_API uint64_t temu_readValueUnsigned(temu_Object_ *Obj,
2447 const char *PropName,
int Idx);
2453 TEMU_API int64_t temu_readValueSigned(temu_Object_ *Obj,
const char *PropName,
2469 uint64_t Val,
int Idx);
2476 int64_t Val,
int Idx);
2483 double Val,
int Idx);
2490 uint64_t Val,
int Idx);
2497 int64_t Val,
int Idx);
2504 double Val,
int Idx);
2512 TEMU_API temu_Propval temu_signedPropval(temu_Type T, int64_t I);
2519 TEMU_API temu_Propval temu_unsignedPropval(temu_Type T, uint64_t U);
2526 TEMU_API temu_Propval temu_floatingPointPropval(temu_Type T,
double V);
void * Impl
Internal pointer, do not touch.
Definition: Objsys.h:460
TEMU_API int temu_isNormalProperty(temu_Object_ *Obj, const char *PropName)
uint64_t BreakOnMemoryWrite
Definition: Objsys.h:108
TEMU_API void temu_listDispose(temu_List *List)
TEMU_API void temu_setValueI32(temu_Object_ *Obj, const char *PropName, int32_t Val, int Idx)
struct temu_Component temu_Component
Definition: Objsys.h:57
void temu_Dict
Definition: Objsys.h:358
TEMU_API int temu_addScalarProperty(temu_Class *Cls, const char *Name, int offset, temu_Type T, const char *Doc)
temu_Type Typ
Element type in list.
Definition: Objsys.h:376
TEMU_API void temu_writeValueDouble(temu_Object_ *Obj, const char *PropName, double Val, int Idx)
TEMU_API void temu_addPseudoProperty(temu_Class *Cls, const char *PropName, temu_Type Typ, int Count, temu_PropWriter Wr, temu_PropReader Rd, temu_PropWriter Set, temu_PropReader Get, const char *Doc)
temu_Type Typ
Type of vector data.
Definition: Objsys.h:364
const TEMU_API char * temu_getLoggingCategory(temu_Class *Cls, unsigned CategoryId)
void(* deserialise)(void *Obj, const char *BaseName, void *Ctxt)
Definition: Objsys.h:2271
TEMU_API int temu_checkpointGetLength(void *Ctxt, const char *Name)
TEMU_API int temu_dictRemoveValue(temu_Dict *Dict, const char *Name)
const char * Key
Name of argument.
Definition: Objsys.h:432
uint64_t TraceMemoryReads
Definition: Objsys.h:102
uint32_t Capacity
Managed do not use directly.
Definition: Objsys.h:367
TEMU_API void temu_addInterfaceArray(temu_Class *Cls, const char *IfaceName, const char *IfaceType, void *Iface, size_t Count, size_t Size, const char *Doc)
TEMU_API void temu_writeValueObj(temu_Object *Obj, const char *PropName, temu_Object *Val, int Idx)
size_t Count
Number of elements in property.
Definition: Objsys.h:1888
uint64_t LoggingFlags
Log category enabled/disabled.
Definition: Objsys.h:90
temu_ListNode * Head
Managed pointer, do not use directly.
Definition: Objsys.h:377
TEMU_API int temu_setVTable(temu_Class *Cls, void *VTable)
#define TEMU_DYN_ARRAY_TYPE(T, P)
Definition: Objsys.h:240
void * Data
Pointer to value if applicable.
Definition: Objsys.h:756
TEMU_API void temu_setValueU8(temu_Object_ *Obj, const char *PropName, uint8_t Val, int Idx)
TEMU_API void temu_qualifyAs(temu_Class *Cls, unsigned Qualifier)
TEMU_API void temu_pluginPathAppend(const char *Path)
int(* checkSanity)(void *Obj, int Report)
Definition: Objsys.h:2279
TEMU_API void temu_writeValueI16(temu_Object_ *Obj, const char *PropName, int16_t Val, int Idx)
TEMU_API int temu_isValidInterfaceName(const char *Name)
TEMU_API int temu_isMachine(const temu_Object_ *Obj)
TEMU_API void temu_writeValueU16(temu_Object_ *Obj, const char *PropName, uint16_t Val, int Idx)
TEMU_API int temu_isNumber(temu_Propval Pv)
const TEMU_API char * temu_nameForObject(const temu_Object_ *Obj)
const TEMU_API char * temu_dictGetNextKey(temu_Dict *Dict, const char *Key)
TEMU_API void temu_setValueU32(temu_Object_ *Obj, const char *PropName, uint32_t Val, int Idx)
TEMU_API int temu_isValidObjectName(const char *Name)
TEMU_API int temu_objectHasIface(const temu_Object_ *Obj, const char *IfaceName)
uintptr_t Offset
Offset from struct start.
Definition: Objsys.h:1889
uintptr_t data0
Definition: Buffer.h:84
temu_IfaceRef * Ifaces
Interface references.
Definition: Objsys.h:141
temu_Object * Obj
Pointer to object containing property.
Definition: Objsys.h:753
TEMU_API void temu_setValueI8(temu_Object_ *Obj, const char *PropName, int8_t Val, int Idx)
void temu_ListNode
Definition: Objsys.h:370
TEMU_API int temu_isQualifiedAs(const temu_Object_ *Obj, unsigned Qualifier)
TEMU_API void * temu_getVTable(const temu_Object_ *Obj)
const TEMU_API char * temu_nameForClass(temu_Class *Cls)
TEMU_API int temu_checkSanity(int Report)
TEMU_API void temu_dictDispose(temu_Dict *Dict)
TEMU_API void * temu_registerInterfaceType(const char *Name)
const char * Name
Property name.
Definition: Objsys.h:355
TEMU_API void temu_listAppend(temu_List *List, temu_Propval Val)
TEMU_API double temu_asDouble(temu_Propval Pv)
void * UserData
User data pointer. This is not saved in snapshots.
Definition: Objsys.h:96
TEMU_API int temu_isString(temu_Propval Pv)
TEMU_API int temu_isPseudoProperty(temu_Object_ *Obj, const char *PropName)
const char * Name
Name of property.
Definition: Objsys.h:1886
int64_t DisposedNotification
Definition: Objsys.h:93
TEMU_API double temu_readValueDouble(temu_Object_ *Obj, const char *PropName, int Idx)
TEMU_API void temu_ifaceRefArrayPush2(temu_IfaceRefArray *Arr TEMU_NONNULL, temu_Object_ *Obj TEMU_NONNULL, void *Iface TEMU_NONNULL)
TEMU_API void temu_foreachInterface(temu_Class *C, void(*Func)(temu_Class *, const char *, void *), void *Arg)
TEMU_API void temu_foreachProcessor(void(*Func)(temu_Object_ *, void *), void *Arg)
TEMU_API int temu_addLoggingCategory(temu_Class *Cls, unsigned CategoryId, const char *Category)
TEMU_API int temu_isDiscrete(temu_Propval Pv)
TEMU_API void temu_foreachProperty(temu_Class *C, void(*Func)(temu_Class *, const char *, void *), void *Arg)
int Index
Index used in access, can be modified by user.
Definition: Objsys.h:754
TEMU_API void temu_qualifyAsCpu(temu_Class *Cls)
TEMU_API int temu_getPropLength(const temu_Object_ *Obj, const char *PropName)
uint32_t data1
Definition: Buffer.h:85
void(* temu_ObjectDisposeFunc)(void *)
Definition: Objsys.h:446
TEMU_API void temu_writeValueSigned(temu_Object_ *Obj, const char *PropName, int64_t Val, int Idx)
TEMU_API int temu_addArrayPseudoProperty(temu_Class *Cls, const char *Name, temu_Type T, int NumElems, const char *Doc)
TEMU_API void temu_ifaceRefArrayDispose(temu_IfaceRefArray *Arr)
TEMU_API void temu_setValueU16(temu_Object_ *Obj, const char *PropName, uint16_t Val, int Idx)
TEMU_API int temu_generateObjectGraph(const char *Path, int Display)
TEMU_API int temu_addScalarPseudoProperty(temu_Class *Cls, const char *Name, temu_Type T, const char *Doc)
TEMU_API int temu_propInfoForClass(temu_Class *Cls, unsigned PIIndex, unsigned PICount, temu_PropInfo *PI)
temu_Object_ * Obj
Object pointer (first field of interface reference)
Definition: Objsys.h:125
TEMU_API int temu_deserialiseJSON(const char *FileName)
TEMU_API int temu_objectHasCmd(const temu_Object_ *Obj, const char *CmdName)
void temu_MetaIface
Definition: Objsys.h:61
TEMU_API void temu_ifaceRefArrayPush(temu_IfaceRefArray *Arr TEMU_NONNULL, temu_IfaceRef Iface)
void(* temu_PropWriter)(void *Obj, temu_Propval Pv, int Idx)
Definition: Objsys.h:712
TEMU_API void temu_pluginPathPrint(void)
void(* setProp)(struct temu_PropAccessor *accessor, temu_Propval pv)
Set property via accessor.
Definition: Objsys.h:768
#define TEMU_IFACE_REFERENCE_TYPE(N)
Definition: Objsys.h:194
TEMU_API void temu_writeValueU32(temu_Object_ *Obj, const char *PropName, uint32_t Val, int Idx)
TEMU_API int temu_writeProp(temu_Object_ *Obj, const char *Name, int idx, temu_Propval *PV)
TEMU_API int temu_isComponent(const temu_Object_ *Obj)
TEMU_API int temu_isSigned(temu_Propval Pv)
TEMU_API void temu_writeValueUnsigned(temu_Object_ *Obj, const char *PropName, uint64_t Val, int Idx)
TEMU_API void temu_foreachClass(void(*Func)(temu_Class *, void *), void *Arg)
temu_Component * Component
Parent component (null for root comp)
Definition: Objsys.h:89
TEMU_API void temu_writeValueI64(temu_Object_ *Obj, const char *PropName, int64_t Val, int Idx)
TEMU_API void temu_setValueU64(temu_Object_ *Obj, const char *PropName, uint64_t Val, int Idx)
TEMU_API void temu_writeValueI8(temu_Object_ *Obj, const char *PropName, int8_t Val, int Idx)
TEMU_API void temu_serialiseProp(void *Ctxt, const char *Name, temu_Type Typ, int Count, void *Data)
TEMU_API void temu_addInterfaceReference(temu_Class *Cls, const char *PropName, int Offset, const char *TypeName, int Count, unsigned Flags, temu_PropWriter Wr, temu_PropReader Rd, const char *Doc)
void temu_TypeObject
Definition: Objsys.h:1883
temu_Type Typ
Type tag.
Definition: Objsys.h:1887
temu_Type Typ
Type of property.
Definition: Objsys.h:752
char * Name
Object name.
Definition: Objsys.h:87
temu_Type Typ
Type of property.
Definition: Objsys.h:346
TEMU_API int temu_addArrayProperty(temu_Class *Cls, const char *Name, int offset, temu_Type T, int NumElems, const char *Doc)
void * Ptr
Pointer to property.
Definition: Objsys.h:347
TEMU_API int temu_inlineDeserialiseJSON(const char *FileName)
TEMU_API int temu_loadPluginGlobal(const char *PluginName)
TEMU_API void temu_setValueI16(temu_Object_ *Obj, const char *PropName, int16_t Val, int Idx)
uint64_t IsCheckpointable
The object is snapshottable.
Definition: Objsys.h:99
temu_PropWriter Setter
Setter function if applicable.
Definition: Objsys.h:759
TEMU_API void temu_addPseudoInterfaceReference(temu_Class *Cls, const char *PropName, const char *TypeName, int Count, unsigned Flags, temu_PropWriter Wr, temu_PropReader Rd, temu_PropWriter Set, temu_PropReader Get, const char *Doc)
TEMU_API void temu_setValue(temu_Object_ *Obj, const char *PropName, temu_Propval Val, int Idx) TEMU_NO_WRAP
TEMU_API int temu_objectHasProp(const temu_Object_ *Obj, const char *PropName)
TEMU_API int temu_connect(temu_Object_ *A, const char *PropName, temu_Object_ *B, const char *IfaceName)
temu_Class * Class
Class pointer.
Definition: Objsys.h:86
uint64_t TraceMemoryWrites
Definition: Objsys.h:104
TEMU_API void temu_writeValue(temu_Object_ *Obj, const char *PropName, temu_Propval Val, int Idx) TEMU_NO_WRAP
temu_Propval Val
Value of argument.
Definition: Objsys.h:433
TEMU_API int temu_isCpu(const temu_Object_ *Obj)
#define PROP_ASSERT(p, t)
Definition: Objsys.h:663
TEMU_API void temu_qualifyAsMemory(temu_Class *Cls)
TEMU_API void temu_vecPush(temu_Vector *Vec, temu_Propval Val)
TEMU_API int temu_isValidPropertyName(const char *Name)
TEMU_API int temu_isReal(temu_Propval Pv)
const char * LoggingCategories[32]
Definition: Objsys.h:466
const TEMU_API char * temu_typenameForInterface(const temu_Object_ *Obj, const void *Iface)
TEMU_API int temu_snapshotGetLength(void *Ctxt, const char *Name)
uint32_t data2
Definition: Buffer.h:86
temu_ListNode * Tail
Managed pointer, do not use directly.
Definition: Objsys.h:378
TEMU_API void temu_writeValueU64(temu_Object_ *Obj, const char *PropName, uint64_t Val, int Idx)
TEMU_API int temu_getPropDynLength(const temu_Object_ *Obj, const char *PropName)
void(* timeSourceSet)(void *Obj)
Definition: Objsys.h:2287
void(* printObject)(void *Obj)
Definition: Objsys.h:2295
TEMU_API int temu_serialiseJSON(const char *FileName)
struct temu_Object temu_Object
Definition: Scheduler.h:18
TEMU_API void temu_qualifyAsMachine(temu_Class *Cls)
temu_Object Super
Super class of the class instance.
Definition: Objsys.h:459
TEMU_API int temu_dictInsertValue(temu_Dict *Dict, const char *Name, temu_Propval Val)
TEMU_API void temu_vecDispose(temu_Vector *Vec)
struct temu_TimeSource temu_TimeSource
Definition: Scheduler.h:17
TEMU_API void temu_writeValueU8(temu_Object_ *Obj, const char *PropName, uint8_t Val, int Idx)
TEMU_API double temu_getValueDouble(temu_Object_ *Obj, const char *PropName, int Idx)
TEMU_API int temu_isUnsigned(temu_Propval Pv)
void(* writeProp)(struct temu_PropAccessor *accessor, temu_Propval pv)
Write property via accessor.
Definition: Objsys.h:764
TEMU_API void temu_setTimeSource(temu_Object_ *Obj, temu_TimeSource_ *TS)
TEMU_API int temu_classHasCommand(const temu_Class *Cls, const char *CmdName)
TEMU_API void temu_objsysClearObjects(void)
temu_Object_ * Obj
Object pointer.
Definition: Objsys.h:354
TEMU_API int temu_addPort(temu_Class *C, const char *IfaceRefName, const char *IfaceName, const char *Doc)
temu_PropReader Reader
Reader function if applicable.
Definition: Objsys.h:758
temu_PropReader Getter
Getter function if applicable.
Definition: Objsys.h:760
uint32_t Reserved
Number of slots allocated for array.
Definition: Objsys.h:140
uint64_t IsTimeSource
Definition: Objsys.h:100
temu_ObjectDisposeFunc Dispose
Definition: Objsys.h:464
void(* serialise)(void *Obj, const char *BaseName, void *Ctxt)
Definition: Objsys.h:2260
uint32_t Size
Number of used items in array.
Definition: Objsys.h:139
const TEMU_API char * temu_typeToName(temu_Type Typ)
TEMU_API void temu_writeValueI32(temu_Object_ *Obj, const char *PropName, int32_t Val, int Idx)
#define PROP_VAL_INITIALIZER(typ, suffix, typetag, valtag)
Definition: Objsys.h:671
TEMU_API int temu_indexForInterface(const temu_Object_ *Obj, const void *Iface)
TEMU_API void temu_setValueSigned(temu_Object_ *Obj, const char *PropName, int64_t Val, int Idx)
TEMU_API void temu_deserialiseProp(void *Ctxt, temu_Object_ *Obj, const char *Name)
#define TEMU_NO_WRAP
Definition: Objsys.h:43
temu_ObjectCreateFunc Create
Definition: Objsys.h:462
TEMU_API int temu_loadPlugin(const char *PluginName)
temu_Type Typ
Value type.
Definition: Objsys.h:389
TEMU_API void temu_requireInterface(temu_Class *Cls, const char *PropName, const char *IfaceType)
int64_t WillDisposeNotification
Definition: Objsys.h:91
TEMU_API void * temu_getVTableForClass(temu_Class *Cls)
TEMU_API void temu_disposeObject(temu_Object_ *Obj)
temu_TypeObject * TypeObj
Definition: Objsys.h:1890
TEMU_API void temu_listPrepend(temu_List *List, temu_Propval Val)
TEMU_API void temu_objsysClear(void)
void * VecData
Managed pointer, do not use directly.
Definition: Objsys.h:365
TEMU_API void temu_setValueDouble(temu_Object_ *Obj, const char *PropName, double Val, int Idx)
TEMU_API void temu_setValueI64(temu_Object_ *Obj, const char *PropName, int64_t Val, int Idx)
TEMU_API void temu_pluginPathRemove(const char *Path)
temu_PropWriter Writer
Writer function if applicable.
Definition: Objsys.h:757
TEMU_API int temu_isMemory(const temu_Object_ *Obj)
uint64_t IsClassObject
The object is a class object.
Definition: Objsys.h:98
TEMU_API void * temu_getInterfaceType(const char *Name)
uint32_t Size
Managed do not use directly.
Definition: Objsys.h:366
const TEMU_API char * temu_nameForInterface(const temu_Object_ *Obj, const void *Iface)
temu_TimeSource * TimeSource
Timesource object.
Definition: Objsys.h:88
TEMU_API int temu_isValidClassName(const char *Name)
uint64_t BreakOnMemoryRead
Definition: Objsys.h:106
const TEMU_API char * temu_getInterfaceName(temu_Object *Obj, void *Iface)
TEMU_API void temu_foreachObject(void(*Func)(temu_Object_ *, void *), void *Arg)
void * VTable
Internal pointer, do not touch.
Definition: Objsys.h:461
TEMU_API unsigned temu_ifaceRefArraySize(temu_IfaceRefArray *Arr)
TEMU_API void temu_setValueUnsigned(temu_Object_ *Obj, const char *PropName, uint64_t Val, int Idx)
void * Iface
Type erased interface pointer.
Definition: Objsys.h:126
void *(* temu_ObjectCreateFunc)(const char *Name, int Argc, const temu_CreateArg *Argv)
Definition: Objsys.h:444
TEMU_API void * temu_vecGetData(temu_Vector *Vec)
struct temu_Class temu_Class
Definition: Objsys.h:60