1 #ifndef ELM_WIDGET_PLUG_H 2 #define ELM_WIDGET_PLUG_H 3 4 #include "Elementary.h" 5 #include "elm_plug_eo.h" 6 7 /* DO NOT USE THIS HEADER UNLESS YOU ARE PREPARED FOR BREAKING OF YOUR 8 * CODE. THIS IS ELEMENTARY'S INTERNAL WIDGET API (for now) AND IS NOT 9 * FINAL. CALL elm_widget_api_check(ELM_INTERNAL_API_VERSION) TO CHECK 10 * IT AT RUNTIME. 11 */ 12 13 /** 14 * @addtogroup Widget 15 * @{ 16 * 17 * @section elm-plug-class The Elementary Plug Class 18 * 19 * Elementary, besides having the @ref Plug widget, exposes its 20 * foundation -- the Elementary Plug Class -- in order to create other 21 * widgets which are a plug with some more logic on top. 22 */ 23 /** 24 * @} 25 */ 26 27 #define ELM_PLUG_DATA_GET(o, sd) \ 28 Elm_Plug_Smart_Data * sd = efl_data_scope_get(o, ELM_PLUG_CLASS) 29 30 #define ELM_PLUG_DATA_GET_OR_RETURN(o, ptr) \ 31 ELM_PLUG_DATA_GET(o, ptr); \ 32 if (EINA_UNLIKELY(!ptr)) \ 33 { \ 34 ERR("No widget data for object %p (%s)", \ 35 o, evas_object_type_get(o)); \ 36 return; \ 37 } 38 39 #define ELM_PLUG_DATA_GET_OR_RETURN_VAL(o, ptr, val) \ 40 ELM_PLUG_DATA_GET(o, ptr); \ 41 if (EINA_UNLIKELY(!ptr)) \ 42 { \ 43 ERR("No widget data for object %p (%s)", \ 44 o, evas_object_type_get(o)); \ 45 return val; \ 46 } 47 48 #define ELM_PLUG_CHECK(obj) \ 49 if (EINA_UNLIKELY(!efl_isa((obj), ELM_PLUG_CLASS))) \ 50 return 51 52 #endif 53