7#include <cx/ssdtree/node/ssdhashnode.h>
11typedef struct SettingsHashNode SettingsHashNode;
12typedef struct SettingsHashNode_WeakRef SettingsHashNode_WeakRef;
15#define _sti_SettingsHashNode _sti_object
16#define SType_SettingsHashNode SettingsHashNode*
17#define STStorageType_SettingsHashNode SettingsHashNode*
18#define STypeArg_SettingsHashNode(type, val) stgeneric(object, (ObjInst*)objInstCheckClass(SettingsHashNode, val))
19#define STypeArgPtr_SettingsHashNode(type, val) (stgeneric*)objInstCheckClassPtr(SettingsHashNode, val)
20#define STypeCheckedArg_SettingsHashNode(type, val) stType(type), stArg(type, val)
21#define STypeCheckedPtrArg_SettingsHashNode(type, val) stType(type), stArgPtr(type, val)
23typedef struct SettingsBind {
32typedef struct SettingsHashNode_ClassIf {
38 bool (*isHashtable)(_In_
void* self);
40 bool (*isArray)(_In_
void* self);
42 bool (*get)(_In_
void* self, int32 idx, _In_opt_ strref name, _When_(
return ==
true, _Out_)
stvar* out, _Inout_ SSDLockState* _ssdCurrentLockState);
45 _Ret_opt_valid_
stvar* (*ptr)(_In_
void* self, int32 idx, _In_opt_ strref name, _Inout_ SSDLockState* _ssdCurrentLockState);
47 bool (*set)(_In_
void* self, int32 idx, _In_opt_ strref name,
stvar val, _Inout_ SSDLockState* _ssdCurrentLockState);
50 bool (*setC)(_In_
void* self, int32 idx, _In_opt_ strref name, _Inout_
stvar* val, _Inout_ SSDLockState* _ssdCurrentLockState);
52 bool (*remove)(_In_
void* self, int32 idx, _In_opt_ strref name, _Inout_ SSDLockState* _ssdCurrentLockState);
54 int32 (*count)(_In_
void* self, _Inout_ SSDLockState* _ssdCurrentLockState);
60 _Ret_valid_ SSDIterator* (*iter)(_In_
void* self);
61 SSDIterator* (*_iterLocked)(_In_
void* self, _Inout_ SSDLockState* _ssdCurrentLockState);
62 bool (*bind)(_In_
void* self, _In_opt_ strref name,
stype btyp,
void* bvar, stgeneric bdef, SSDLockState* _ssdCurrentLockState);
64 void (*checkBound)(_In_
void* self, _In_opt_ strref name, SSDLockState* _ssdCurrentLockState);
66 void (*checkAll)(_In_
void* self, SSDLockState* _ssdCurrentLockState);
67 void (*unbindAll)(_In_
void* self, SSDLockState* _ssdCurrentLockState);
68} SettingsHashNode_ClassIf;
69extern SettingsHashNode_ClassIf SettingsHashNode_ClassIf_tmpl;
71typedef struct SettingsHashNode {
73 SettingsHashNode_ClassIf* _;
74 void* _is_SettingsHashNode;
75 void* _is_SSDHashNode;
89#define SettingsHashNode(inst) objInstCheckClass(SettingsHashNode, inst)
90#define SettingsHashNodeNone ((SettingsHashNode*)NULL)
92typedef struct SettingsHashNode_WeakRef {
95 void* _is_SettingsHashNode_WeakRef;
96 void* _is_SSDHashNode_WeakRef;
97 void* _is_SSDNode_WeakRef;
98 void* _is_ObjInst_WeakRef;
100 atomic(uintptr) _ref;
102} SettingsHashNode_WeakRef;
103#define SettingsHashNode_WeakRef(inst) objWeakRefCheckClass(SettingsHashNode, inst)
107#define settingshashnode_create(tree) SettingsHashNode__create(SSDTree(tree))
110#define settingshashnodeUpdateModified(self) SSDNode_updateModified(SSDNode(self))
115#define settingshashnodeIsHashtable(self) (self)->_->isHashtable(SettingsHashNode(self))
119#define settingshashnodeIsArray(self) (self)->_->isArray(SettingsHashNode(self))
123#define settingshashnodeGet(self, idx, name, out, _ssdCurrentLockState) (self)->_->get(SettingsHashNode(self), idx, name, out, _ssdCurrentLockState)
128#define settingshashnodePtr(self, idx, name, _ssdCurrentLockState) (self)->_->ptr(SettingsHashNode(self), idx, name, _ssdCurrentLockState)
132#define settingshashnodeSet(self, idx, name, val, _ssdCurrentLockState) (self)->_->set(SettingsHashNode(self), idx, name, val, _ssdCurrentLockState)
137#define settingshashnodeSetC(self, idx, name, val, _ssdCurrentLockState) (self)->_->setC(SettingsHashNode(self), idx, name, val, _ssdCurrentLockState)
141#define settingshashnodeRemove(self, idx, name, _ssdCurrentLockState) (self)->_->remove(SettingsHashNode(self), idx, name, _ssdCurrentLockState)
145#define settingshashnodeCount(self, _ssdCurrentLockState) (self)->_->count(SettingsHashNode(self), _ssdCurrentLockState)
153#define settingshashnodeIter(self) (self)->_->iter(SettingsHashNode(self))
155#define settingshashnode_iterLocked(self, _ssdCurrentLockState) (self)->_->_iterLocked(SettingsHashNode(self), _ssdCurrentLockState)
157#define settingshashnodeBind(self, name, btyp, bvar, bdef, _ssdCurrentLockState) (self)->_->bind(SettingsHashNode(self), name, btyp, bvar, bdef, _ssdCurrentLockState)
161#define settingshashnodeCheckBound(self, name, _ssdCurrentLockState) (self)->_->checkBound(SettingsHashNode(self), name, _ssdCurrentLockState)
165#define settingshashnodeCheckAll(self, _ssdCurrentLockState) (self)->_->checkAll(SettingsHashNode(self), _ssdCurrentLockState)
167#define settingshashnodeUnbindAll(self, _ssdCurrentLockState) (self)->_->unbindAll(SettingsHashNode(self), _ssdCurrentLockState)
#define saDeclarePtr(name)
#define _objfactory_guaranteed
#define stvar(typen, val)
CX Struct System - Introspectable, serializable POD structures in C.
CX Object System - Object-oriented programming in C.