54 #ifndef MINICTRL_DATA_BINDING_H
55 #define MINICTRL_DATA_BINDING_H
61 typedef struct _mBindPropClass mBindPropClass;
64 typedef struct _mBindProp mBindProp;
67 #define mBindPropClassHeader(clss, superCls) \
68 mObjectClassHeader(clss, superCls) \
69 DWORD (* get)(clss *); \
70 BOOL (* set)(clss *, DWORD newdata);
72 struct _mBindPropClass{
73 mBindPropClassHeader(mBindProp,
mObject)
76 MGNCS_EXPORT
extern mBindPropClass g_stmBindPropCls;
78 typedef struct _mBindPropListNode{
80 struct _mBindPropListNode * next;
83 #define NCS_PROP_FLAG_READ 0x01
84 #define NCS_PROP_FLAG_WRITE 0x02
85 #define mBindPropHeader(clss) \
91 mBindPropListNode * listens; \
94 #define MAKE_BINDPROP_INFO(br, bw, type) \
95 (((br)?NCS_PROP_FLAG_READ:0)|((bw)?NCS_PROP_FLAG_WRITE:0)|((type)<<16))
98 mBindPropHeader(mBindProp)
101 MGNCS_EXPORT
void ncsBindPropRasieChanged(mBindProp *bprop);
103 MGNCS_EXPORT
int ncsBindPropAddRef(mBindProp *bprop);
104 MGNCS_EXPORT
int ncsBindPropRelease(mBindProp *bprop);
105 MGNCS_EXPORT
void ncsBindPropAutoRelfect(mBindProp *bprop);
107 MGNCS_EXPORT BOOL ncsConnectBindProps(mBindProp * psource, mBindProp* plistener,
int type);
109 enum ncsBindPropType{
115 MGNCS_EXPORT BOOL ncsAutoReflectObjectBindProps(
mObject * obj);
116 MGNCS_EXPORT BOOL ncsRemoveObjectBindProps(
mObject *obj);
118 MGNCS_EXPORT BOOL ncsAddObjectBindProps(
mObject *obj, mBindProp *bprop);
120 typedef BOOL (*NCS_TEST_BINDPROP)(mBindProp*,
void *param);
121 typedef mBindProp* (*NCS_NEW_BINDPROP)(
void* param);
123 MGNCS_EXPORT mBindProp* ncsRegisterBindProp(
mObject* obj,
124 NCS_TEST_BINDPROP test_exist,
125 NCS_NEW_BINDPROP new_prop,
128 typedef BOOL (*NCS_RAISE_TEST)(mBindProp* prop, DWORD param);
129 MGNCS_EXPORT
void ncsRaiseObjectBindProps(
mObject *obj, NCS_RAISE_TEST raise_test, DWORD param);
132 MGNCS_EXPORT
void *ncsNewBindPropsObjGroup(
void);
133 MGNCS_EXPORT
void ncsDeleteBindPropsGroup(
void*);
134 MGNCS_EXPORT
void ncsAutoReflexBindPropsGroup(
void* group);
135 MGNCS_EXPORT
void ncsAddBindPropsObj(
void *group,
mObject *obj);
140 typedef struct _mCompBindPropClass mCompBindPropClass;
141 typedef struct _mCompBindProp mCompBindProp;
143 #define mCompBindPropClassHeader(clss, superCls) \
144 mBindPropClassHeader(clss, superCls)
146 struct _mCompBindPropClass{
147 mCompBindPropClassHeader(mCompBindProp, mBindProp)
150 MGNCS_EXPORT
extern mCompBindPropClass g_stmCompBindPropCls;
152 #define mCompBindPropHeader(clss) \
153 mBindPropHeader(clss) \
158 struct _mCompBindProp{
159 mCompBindPropHeader(mCompBindProp)
163 MGNCS_EXPORT
void ncsRaiseComponentBindProps(
mComponent *comp,
int event_id);
165 MGNCS_EXPORT mBindProp * ncsRegisterComponentBindProp(
mComponent* comp,
int event_id,
int prop_id,
int data_type, DWORD flags);
166 #define NCS_CMPT_PROP(comp, event_id, prop_id, data_type, flags) \
167 ncsRegisterComponentBindProp((mComponent*)(comp), (event_id), (prop_id), (data_type), flags)
173 typedef struct _mVariableBindPropClass mVariableBindPropClass;
174 typedef struct _mVariableBindProp mVariableBindProp;
176 #define mVariableBindPropClassHeader(clss, super) \
177 mBindPropClassHeader(clss, super)
179 struct _mVariableBindPropClass{
180 mVariableBindPropClassHeader(mVariableBindProp, mBindProp)
183 MGNCS_EXPORT
extern mVariableBindPropClass g_stmVariableBindPropCls;
185 #define mVariableBindPropHeader(clss) \
186 mBindPropHeader(clss) \
189 struct _mVariableBindProp{
190 mVariableBindPropHeader(mVariableBindProp)
193 #define _SET_VAR(type, left, right) \
194 *((type*)(left)) = ((type)(right))
197 MGNCS_EXPORT mBindProp * ncsRegisterVariableBindProp(
void *pvalue,
int data_type, DWORD flags);
198 #define VAR_PROP(value, data_type, flags) \
199 ncsRegisterVariableBindProp((void*)(&(value)), (data_type), (flags))
201 #define INT_PROP(value, flags) VAR_PROP(value, NCS_BT_INT, flags)
202 #define STRPTR_PROP(value, flags) VAR_PROP(value, NCS_BT_STR_PTR, flags)
204 #define ncsRaiseVariableBindProp(pvalue) \
205 ncsRaiseObjectBindProps((mObject*)(pvalue),NULL, 0)
208 MGNCS_EXPORT BOOL ncsInitDataBinding(
void);