1 #ifndef ELM_WIDGET_WEB_H
2 #define ELM_WIDGET_WEB_H
3 
4 /* DO NOT USE THIS HEADER UNLESS YOU ARE PREPARED FOR BREAKING OF YOUR
5  * CODE. THIS IS ELEMENTARY'S INTERNAL WIDGET API (for now) AND IS NOT
6  * FINAL. CALL elm_widget_api_check(ELM_INTERNAL_API_VERSION) TO CHECK
7  * IT AT RUNTIME.
8  */
9 
10 /**
11  * @addtogroup Widget
12  * @{
13  *
14  * @section elm-web-class The Elementary Web Class
15  *
16  * Elementary, besides having the @ref Web widget, exposes its
17  * foundation -- the Elementary Web Class -- in order to create other
18  * widgets which are a web view with some more logic on top.
19  */
20 
21 /**
22  * Base widget smart data extended with web instance data.
23  */
24 typedef struct _Elm_Web_Data Elm_Web_Data;
25 struct _Elm_Web_Data
26 {
27    Evas_Object *obj;
28 };
29 
30 struct _Elm_Web_Callback_Proxy_Context
31 {
32    const char  *name;
33    Evas_Object *obj;
34 };
35 typedef struct _Elm_Web_Callback_Proxy_Context Elm_Web_Callback_Proxy_Context;
36 
37 /**
38  * @}
39  */
40 
41 #define ELM_WEB_DATA_GET(o, sd) \
42   Elm_Web_Data * sd = efl_data_scope_get(o, ELM_WEB_CLASS)
43 
44 #define ELM_WEB_DATA_GET_OR_RETURN(o, ptr)           \
45   ELM_WEB_DATA_GET(o, ptr);                          \
46   if (EINA_UNLIKELY(!ptr))                           \
47     {                                                \
48        ERR("No widget data for object %p (%s)",      \
49            o, evas_object_type_get(o));              \
50        return;                                       \
51     }
52 
53 #define ELM_WEB_DATA_GET_OR_RETURN_VAL(o, ptr, val)  \
54   ELM_WEB_DATA_GET(o, ptr);                          \
55   if (EINA_UNLIKELY(!ptr))                           \
56     {                                                \
57        ERR("No widget data for object %p (%s)",      \
58            o, evas_object_type_get(o));              \
59        return val;                                   \
60     }
61 
62 #define ELM_WEB_CHECK(obj)                              \
63   if (EINA_UNLIKELY(!efl_isa((obj), ELM_WEB_CLASS))) \
64     return
65 
66 #endif
67