pui*: define PUI_MAGICs and add check logic of them
[platform/core/uifw/libpui.git] / src / PUI_internal.h
index 06be182..39c6af7 100644 (file)
 #define PATH_MAX 4096
 #endif
 
+#define PUI_MAGIC_NONE         0xfedc4321
+#define PUI_MAGIC_PUI_M        0xDE9BBFAE
+#define PUI_MAGIC_PUI_H        0xDE89C0AD
+#define PUI_MAGIC_ANI_H        0xDE77C1AC
+#define PUI_MAGIC_ANI_T        0xDE65C2AB
+
+typedef unsigned int PUI_Magic;
+#define PUI_MAGIC      PUI_Magic __magic
+
+#define PUI_MAGIC_SET(p, m)            (p)->__magic = (m)
+#define PUI_MAGIC_CHECK(p, m)  ((p) && ((p)->__magic == (m)))
+#define PUI_MAGIC_FAIL(p, m, fn)       _pui_magic_fail((p), (p) ? (p)->__magic : 0, (m), (fn));
+
 struct _pui_ani
 {
+       PUI_MAGIC;
+
        pui_h pui_handle;
        pui_ani_t *ani;
 
@@ -52,8 +67,9 @@ struct _pui_ani
 
 struct _pui_ani_t
 {
-       pui_ani_h ani_h;
+       PUI_MAGIC;
 
+       pui_ani_h ani_h;
        pui_id id;
        pui_ani_cmd cmd;
        int repeat;
@@ -73,6 +89,8 @@ struct _pui_ani_t
 
 struct _pui
 {
+       PUI_MAGIC;
+
        Ecore_Wl2_Window *win;
        Ecore_Wl2_Display *ewd;
        int visibility;
@@ -93,6 +111,8 @@ struct _pui
 
 struct _pui_module_data
 {
+       PUI_MAGIC;
+
        void *module_info;
        pui_backend_module *backend_module_info;
        pui_backend_module_data *backend_module_data;
@@ -102,6 +122,9 @@ struct _pui_module_data
 extern "C" {
 #endif
 
+void
+_pui_magic_fail(const void *p, PUI_Magic m, PUI_Magic req_m, const char *fname);
+
 pui_ani_control_buffer *
 pui_ani_get_buffer(pui_ani_h ani_h);