bindings: Base methods support in Instance class
[sdk] / bindings / c / eC.h
index 2dabb75..0c55764 100644 (file)
@@ -98,6 +98,7 @@ extern "C"
 #define OldArray           eC_OldArray
 
 #define Window             eC_Window
+#define DataBox            eC_DataBox
 #define ClassDesignerBase  eC_ClassDesignerBase
 #define DesignerBase       eC_DesignerBase
 
@@ -154,36 +155,36 @@ extern "C"
 // Virtual Method Calls
 
 // Base Class
-#define _onDisplay(c, i, s, x, y, w, d, a, f) ({ void (* method)(eC_Class *, void *, eC_Surface, int, int, int, void *, Alignment, DataDisplayFlags) = (void (*)(eC_Class *, void *, eC_Surface, int, int, int, void *, Alignment, DataDisplayFlags))((c) ? (c)->_vTbl : class_class->_vTbl)[onDisplay_vTblID]; \
-                                                method ? method((c), i, s, x, y, w, d, a, f) : 1; })
+#define _onDisplay(c, i, s, x, y, w, d, a, f) ({ void (* method)(eC_Class *, void *, eC_Instance /*Surface*/, int, int, int, void *, Alignment, DataDisplayFlags) = (void (*)(eC_Class *, void *, eC_Instance /*eC_Surface*/, int, int, int, void *, Alignment, DataDisplayFlags))((c) ? (c)->_vTbl : class_class->_vTbl)[onDisplay_vTblID]; \
+                                                if(method) method((c), i, s, x, y, w, d, a, f); })
 #define _onCompare(c, i, o)                   ({ int (* method)(eC_Class *, void *, void *) = (int (*)(eC_Class *, void *, void *))((c) ? (c)->_vTbl : class_class->_vTbl)[onCompare_vTblID]; \
                                                 method ? method((c), i, o) : 1; })
-#define _onCopy(c, i, co, o)                  ({ void (* method)(eC_Class *, void *, eC_Class *, void *) = (void (*)(eC_Class *, void *, eC_Class *, void *))((c) ? (c)->_vTbl : class_class->_vTbl)[onCopy_vTblID]; \
-                                                method ? method((c), i, co, o) : 1; })
+#define _onCopy(c, i, o)                      ({ void (* method)(eC_Class *, void *, void *) = (void (*)(eC_Class *, void *, void *))((c) ? (c)->_vTbl : class_class->_vTbl)[onCopy_vTblID]; \
+                                                if(method) method((c), i, o); })
 #define _onFree(c, i)                         ({ void (* method)(eC_Class *, void *) = (void (*)(eC_Class *, void *))((c) ? (c)->_vTbl : class_class->_vTbl)[onFree_vTblID]; \
-                                                method ? method((c), i) : 1; })
+                                                if(method) method((c), i); })
 #define _onGetString(c, i, t, d, n)           ({ constString (* method)(eC_Class *, void *, char *, void *, bool *) = (constString (*)(eC_Class *, void *, char *, void *, bool *))((c) ? (c)->_vTbl : class_class->_vTbl)[onGetString_vTblID]; \
                                                 method ? method((c), i, t, d, n) : null; })
 #define _onGetDataFromString(c, i, s)         ({ bool (* method)(eC_Class *, void *, constString) = (bool (*)(eC_Class *, void *, constString))((c) ? (c)->_vTbl : class_class->_vTbl)[onGetDataFromString_vTblID]; \
                                                 method ? method((c), i, s) : 1; })
-#define _onEdit(c, i, b, o, x, y, w, h, u)    ({ eC_Window (* method)(eC_Class *, void *, DataBox, DataBox, int, int, int, int, void *) = (eC_Window (*)(eC_Class *, void *, DataBox, DataBox, int, int, int, int, void *))((c) ? (c)->_vTbl : class_class->_vTbl)[onEdit_vTblID]; \
-                                                method ? method((c), i, b, i, x, y, w, h, u) : 1; })
+#define _onEdit(c, i, b, o, x, y, w, h, u)    ({ eC_Window (* method)(eC_Class *, void *, eC_DataBox, eC_DataBox, int, int, int, int, void *) = (eC_Window (*)(eC_Class *, void *, eC_DataBox, eC_DataBox, int, int, int, int, void *))((c) ? (c)->_vTbl : class_class->_vTbl)[onEdit_vTblID]; \
+                                                method ? method((c), i, b, i, x, y, w, h, u) : null; })
 #define _onSerialize(c, i, s)                 ({ void (* method)(eC_Class *, void *, eC_IOChannel) = (void (*)(eC_Class *, void *, eC_IOChannel))((c) ? (c)->_vTbl : class_class->_vTbl)[onSerialize_vTblID]; \
-                                                method ? method((c), i, s) : 1; })
+                                                if(method) method((c), i, s); })
 #define _onUnserialize(c, i, s)               ({ void (* method)(eC_Class *, void *, eC_IOChannel) = (void (*)(eC_Class *, void *, eC_IOChannel))((c) ? (c)->_vTbl : class_class->_vTbl)[onUnserialize_vTblID]; \
-                                                method ? method((c), i, s) : 1; })
+                                                if(method) method((c), i, s); })
 #define _onSaveEdit(c, i, w, o)               ({ bool (* method)(eC_Class *, void *, eC_Window, void *) = (bool (*)(eC_Class *, void *, eC_Window, void *))((c) ? (c)->_vTbl : class_class->_vTbl)[onSaveEdit_vTblID]; \
                                                 method ? method((c), i, w, o) : 1; })
 
 // Base Virtual Methods for Normal Classes
-#define Instance_onDisplay(c, i, s, x, y, w, d, a, f)  _onDisplay(i ? i->_class : c, i, s, x, y, w, d, a, f)
-#define Instance_onCompare(c, i, o)                    _onCompare(i ? i->_class : c, i, o)
-#define Instance_onCopy(c, i, co, o)                   _onCopy(c, &i, co, o)
-#define Instance_onFree(c, i)                          _onFree(i ? i->_class : c, i)
-#define Instance_onGetString(c, i, t, d, n)            _onGetString(i ? i->_class : c, i, t, d, n)
+#define Instance_onDisplay(c, i, s, x, y, w, d, a, f)  _onDisplay((i) ? (i)->_class : c, i, s, x, y, w, d, a, f)
+#define Instance_onCompare(c, i, o)                    _onCompare((i) ? (i)->_class : c, i, o)
+#define Instance_onCopy(c, i, o)                       _onCopy((o) ? (o)->_class : c, &i, o)
+#define Instance_onFree(c, i)                          _onFree((i) ? (i)->_class : c, i)
+#define Instance_onGetString(c, i, t, d, n)            _onGetString((i) ? (i)->_class : c, i, t, d, n)
 #define Instance_onGetDataFromString(c, i, s)          _onGetDataFromString(c, &i, s)
-#define Instance_onEdit(c, i, b, o, x, y, w, h, u)     _onEdit(i ? i->_class : c, i, b, o, x, y, w, h, u)
-#define Instance_onSerialize(c, i, s)                  _onSerialize(i ? i->_class : c, i, s)
+#define Instance_onEdit(c, i, b, o, x, y, w, h, u)     _onEdit((i) ? (i)->_class : c, i, b, o, x, y, w, h, u)
+#define Instance_onSerialize(c, i, s)                  _onSerialize((i) ? (i)->_class : c, i, s)
 #define Instance_onUnserialize(c, i, s)                _onUnserialize(c, &i, s)
 #define Instance_onSaveEdit(c, i, w, o)                _onSaveEdit(c, &i, w, o)
 
@@ -827,7 +828,7 @@ struct class_members_Instance
    Class * _class;
    int _refCount;
 };
-struct layout_Module
+struct class_members_Module
 {
    Application application;
    OldList classes;
@@ -1095,6 +1096,7 @@ Module eC_init(bool guiApp, int argc, char * argv[]);
    #undef OldArray
 
    #undef Window
+   #undef DataBox
    #undef ClassDesignerBase
    #undef DesignerBase