Modules | Data Structures | Macros | Typedefs | Enumerations | Functions | Variables
Eo

Generic object system. More...

Modules

 Eo's Debug information helper.
 
 Eo's Event Handling
 
 Eo Class
 
 Eo's Class class.
 
 Eo's Base class.
 

Data Structures

struct  _Eo_Op_Call_Data
 
struct  _Eo_Call_Cache_Index
 
struct  _Eo_Call_Cache_Entry
 
struct  _Eo_Call_Cache_Off
 
struct  _Eo_Call_Cache
 
struct  _Eo_Event_Description
 This struct holds the description of a specific event. More...
 
struct  _Eo_Callback_Array_Item
 An item in an array of callback desc/func. More...
 
struct  _Eo_Dbg_Info
 The structure for the debug info used by Eo. More...
 

Macros

#define EO_CLASS   EO_BASE_CLASS
 
#define EO_NOOP   ((Eo_Op) 0)
 A special Eo_Op meaning "No operation".
 
#define EO_CLASS_DESCRIPTION_NOOPS()   { NULL, 0}
 
#define EO_CLASS_DESCRIPTION_OPS(op_descs)   { op_descs, EINA_C_ARRAY_LENGTH(op_descs) }
 
#define EO_CALL_CACHE_SIZE   1
 
#define EO_FUNC_CALL(...)   __VA_ARGS__
 
#define EO_FUNC_COMMON_OP_FUNC(Name)   ((const void *) Name)
 
#define EO_FUNC_COMMON_OP(Name, DefRet)
 
#define EO_FUNC_BODY(Name, Ret, DefRet)
 
#define EO_VOID_FUNC_BODY(Name)
 
#define EO_FUNC_BODYV(Name, Ret, DefRet, Arguments, ...)
 
#define EO_VOID_FUNC_BODYV(Name, Arguments, ...)
 
#define _EO_OP_API_ENTRY(a)   (void*)a
 
#define EO_OP_FUNC(_api, _private)   { _EO_OP_API_ENTRY(_api), (void*)_private, EO_OP_TYPE_REGULAR }
 
#define EO_OP_CLASS_FUNC(_api, _private)   { _EO_OP_API_ENTRY(_api), (void*)_private, EO_OP_TYPE_CLASS }
 
#define EO_OP_FUNC_OVERRIDE(_api, _private)   { _EO_OP_API_ENTRY(_api), (void*)_private, EO_OP_TYPE_REGULAR_OVERRIDE }
 
#define EO_OP_CLASS_FUNC_OVERRIDE(_api, _private)   { _EO_OP_API_ENTRY(_api), (void*)_private, EO_OP_TYPE_CLASS_OVERRIDE }
 
#define _eo_do_common(eoid, clsid, is_super, ...)
 
#define _eo_do_common_ret(eoid, clsid, is_super, ret_tmp, func)
 
#define eo_do(eoid, ...)   _eo_do_common(eoid, NULL, EINA_FALSE, __VA_ARGS__)
 
#define eo_do_super(eoid, clsid, func)   _eo_do_common(eoid, clsid, EINA_TRUE, func)
 
#define eo_do_ret(eoid, ret_tmp, func)   _eo_do_common_ret(eoid, NULL, EINA_FALSE, ret_tmp, func)
 
#define eo_do_super_ret(eoid, clsid, ret_tmp, func)   _eo_do_common_ret(eoid, clsid, EINA_TRUE, ret_tmp, func)
 
#define eo_do_part(eoid, part_func, ...)
 
#define _eo_add_common(klass, parent, is_ref, ...)
 
#define eo_add(klass, parent, ...)   _eo_add_common(klass, parent, EINA_FALSE, ##__VA_ARGS__)
 Create a new object and call its constructor(If it exits). More...
 
#define eo_add_ref(klass, parent, ...)   _eo_add_common(klass, parent, EINA_TRUE, ##__VA_ARGS__)
 Create a new object and call its constructor(If it exists). More...
 
#define eo_data_xref(obj, klass, ref_obj)   eo_data_xref_internal(__FILE__, __LINE__, obj, klass, ref_obj)
 Use this macro if you want to associate a referencer object. More...
 
#define eo_data_ref(obj, klass)   eo_data_xref_internal(__FILE__, __LINE__, obj, klass, (const Eo *)obj)
 Use this macro if you don't want to associate a referencer object. More...
 
#define eo_data_xunref(obj, data, ref_obj)   eo_data_xunref_internal(obj, data, ref_obj)
 Use this function if you used eo_data_xref to reference the data. More...
 
#define eo_data_unref(obj, data)   eo_data_xunref_internal(obj, data, obj)
 Use this function if you used eo_data_ref to reference the data. More...
 
#define eo_xref(obj, ref_obj)   eo_xref_internal(__FILE__, __LINE__, obj, ref_obj)
 Convenience macro around eo_xref_internal() More...
 

Typedefs

typedef struct _Eo_Opaque Eo
 The basic Object type.
 
typedef Eo Eo_Class
 The basic class type - should be removed, just for compat. More...
 
typedef enum _Eo_Op_Type Eo_Op_Type
 
typedef struct _Eo_Event_Description Eo_Event_Description2
 XXX: Hack until fixed in Eolian.
 
typedef Eina_Bool(* Eo_Event_Cb) (void *data, Eo *obj, const Eo_Event_Description2 *desc, void *event_info)
 An event callback prototype. More...
 
typedef unsigned int Eo_Op
 The Eo operation type id.
 
typedef struct _Eo_Op_Call_Data Eo_Op_Call_Data
 
typedef struct _Eo_Call_Cache_Index Eo_Call_Cache_Index
 
typedef struct _Eo_Call_Cache_Entry Eo_Call_Cache_Entry
 
typedef struct _Eo_Call_Cache_Off Eo_Call_Cache_Off
 
typedef struct _Eo_Call_Cache Eo_Call_Cache
 
typedef struct _Eo_Event_Description Eo_Event_Description
 This struct holds the description of a specific event.
 
typedef struct _Eo_Callback_Array_Item Eo_Callback_Array_Item
 An item in an array of callback desc/func. More...
 
typedef struct _Eo_Dbg_Info Eo_Dbg_Info
 The structure for the debug info used by Eo.
 
typedef short Eo_Callback_Priority
 Callback priority value. More...
 

Enumerations

enum  _Eo_Op_Type {
  EO_OP_TYPE_INVALID = -1,
  EO_OP_TYPE_REGULAR = 0,
  EO_OP_TYPE_CLASS,
  EO_OP_TYPE_REGULAR_OVERRIDE,
  EO_OP_TYPE_CLASS_OVERRIDE
}
 

Functions

EAPI Eina_Bool eo_init (void)
 Init the eo subsystem. More...
 
EAPI Eina_Bool eo_shutdown (void)
 Shutdown the eo subsystem. More...
 
EAPI Eo_Op _eo_api_op_id_get (const void *api_func)
 
EAPI Eina_Bool _eo_call_resolve (const char *func_name, Eo_Op_Call_Data *call, Eo_Call_Cache *callcache, const char *file, int line)
 
EAPI Eina_Bool _eo_do_start (const Eo *obj, const Eo_Class *cur_klass, Eina_Bool is_super, void *eo_stack)
 
EAPI void _eo_do_end (void *eo_stack)
 
EAPI Eo_eo_add_end (void *eo_stack)
 
EAPI void * _eo_stack_get (void)
 
EAPI const Eo_Classeo_class_get (const Eo *obj)
 Gets the class of the object. More...
 
EAPI Eo_eo_add_internal_start (const char *file, int line, const Eo_Class *klass_id, Eo *parent, Eina_Bool ref)
 
EAPI void * eo_data_get (const Eo *obj, const Eo_Class *klass) EINA_DEPRECATED
 Get a pointer to the data of an object for a specific class. More...
 
EAPI void * eo_data_scope_get (const Eo *obj, const Eo_Class *klass)
 Get a pointer to the data of an object for a specific class. More...
 
EAPI void * eo_data_xref_internal (const char *file, int line, const Eo *obj, const Eo_Class *klass, const Eo *ref_obj)
 Get a pointer to the data of an object for a specific class and increment the data reference count. More...
 
EAPI void eo_data_xunref_internal (const Eo *obj, void *data, const Eo *ref_obj)
 Decrement the object data reference count by 1. More...
 
EAPI Eoeo_ref (const Eo *obj)
 Increment the object's reference count by 1. More...
 
EAPI void eo_unref (const Eo *obj)
 Decrement the object's reference count by 1 and free it if needed. More...
 
EAPI int eo_ref_get (const Eo *obj)
 Return the ref count of the object passed. More...
 
EAPI void eo_del (const Eo *obj)
 Unrefs the object and reparents it to NULL. More...
 
EAPI Eoeo_xref_internal (const char *file, int line, Eo *obj, const Eo *ref_obj)
 Increment the object's reference count by 1 (and associate the ref with ref_obj) More...
 
EAPI void eo_xunref (Eo *obj, const Eo *ref_obj)
 Decrement the object's reference count by 1 and free it if needed. More...
 
EAPI void eo_manual_free_set (Eo *obj, Eina_Bool manual_free)
 Enable or disable the manual free feature. More...
 
EAPI Eina_Bool eo_manual_free (Eo *obj)
 Frees the object. More...
 
EAPI Eina_Bool eo_destructed_is (const Eo *obj)
 Checks if the object was already descructed (only relevant for manual_free objects). More...
 

Variables

EAPI Eina_Spinlock _eo_class_creation_lock
 This variable is used for locking purposes in the class_get function defined in EO_DEFINE_CLASS. More...
 
EAPI Eina_Spinlock _eo_class_creation_lock
 This variable is used for locking purposes in the class_get function defined in EO_DEFINE_CLASS. More...
 

Detailed Description

Generic object system.

Macro Definition Documentation

#define EO_FUNC_COMMON_OP (   Name,
  DefRet 
)
Value:
static Eo_Call_Cache ___cache; /* static 0 by default */ \
Eo_Op_Call_Data ___call; \
if (EINA_UNLIKELY(___cache.op == EO_NOOP)) \
{ \
___cache.op = _eo_api_op_id_get(EO_FUNC_COMMON_OP_FUNC(Name)); \
if (___cache.op == EO_NOOP) return DefRet; \
} \
if (!_eo_call_resolve(#Name, &___call, &___cache, \
__FILE__, __LINE__)) return DefRet; \
_Eo_##Name##_func _func_ = (_Eo_##Name##_func) ___call.func; \
#define EO_NOOP
A special Eo_Op meaning "No operation".
Definition: Eo.h:239
#define EINA_UNLIKELY(exp)
Definition: eina_types.h:309
Definition: Eo.h:461
#define EO_FUNC_BODY (   Name,
  Ret,
  DefRet 
)
Value:
Ret \
Name(void) \
{ \
typedef Ret (*_Eo_##Name##_func)(Eo *, void *obj_data); \
Ret _r; \
EO_FUNC_COMMON_OP(Name, DefRet); \
_r = _func_(___call.obj, ___call.data); \
return _r; \
}
struct _Eo_Opaque Eo
The basic Object type.
Definition: Eo.h:106
#define EO_VOID_FUNC_BODY (   Name)
Value:
void \
Name(void) \
{ \
typedef void (*_Eo_##Name##_func)(Eo *, void *obj_data); \
EO_FUNC_COMMON_OP(Name, ); \
_func_(___call.obj, ___call.data); \
}
struct _Eo_Opaque Eo
The basic Object type.
Definition: Eo.h:106
#define EO_FUNC_BODYV (   Name,
  Ret,
  DefRet,
  Arguments,
  ... 
)
Value:
Ret \
Name(__VA_ARGS__) \
{ \
typedef Ret (*_Eo_##Name##_func)(Eo *, void *obj_data, __VA_ARGS__); \
Ret _r; \
EO_FUNC_COMMON_OP(Name, DefRet); \
_r = _func_(___call.obj, ___call.data, Arguments); \
return _r; \
}
struct _Eo_Opaque Eo
The basic Object type.
Definition: Eo.h:106
#define EO_VOID_FUNC_BODYV (   Name,
  Arguments,
  ... 
)
Value:
void \
Name(__VA_ARGS__) \
{ \
typedef void (*_Eo_##Name##_func)(Eo *, void *obj_data, __VA_ARGS__); \
EO_FUNC_COMMON_OP(Name, ); \
_func_(___call.obj, ___call.data, Arguments); \
}
struct _Eo_Opaque Eo
The basic Object type.
Definition: Eo.h:106
#define _eo_do_common (   eoid,
  clsid,
  is_super,
  ... 
)
Value:
do { \
_eo_do_start(eoid, clsid, is_super, _eo_stack_get()); \
__VA_ARGS__; \
_eo_do_end(_eo_stack_get()); \
} while (0)
#define _eo_do_common_ret (   eoid,
  clsid,
  is_super,
  ret_tmp,
  func 
)
Value:
( \
_eo_do_start(eoid, clsid, is_super, _eo_stack_get()), \
ret_tmp = func, \
_eo_do_end(_eo_stack_get()), \
ret_tmp \
)
#define eo_do_part (   eoid,
  part_func,
  ... 
)
Value:
do { \
Eo *__eo_part = eoid; \
eo_do(eoid, __eo_part = part_func); \
eo_do(__eo_part, __VA_ARGS__); \
} while (0)
struct _Eo_Opaque Eo
The basic Object type.
Definition: Eo.h:106
#define _eo_add_common (   klass,
  parent,
  is_ref,
  ... 
)
Value:
( \
_eo_do_start(_eo_add_internal_start(__FILE__, __LINE__, klass, parent, is_ref), \
klass, EINA_FALSE, _eo_stack_get()) \
, ##__VA_ARGS__, \
(Eo *) _eo_add_end(_eo_stack_get()) \
)
#define EINA_FALSE
boolean value FALSE (numerical value 0)
Definition: eina_types.h:338
parent_expr const parent
Placeholder for the parent argument.
Definition: eo_concrete.hh:301
struct _Eo_Opaque Eo
The basic Object type.
Definition: Eo.h:106
#define eo_add (   klass,
  parent,
  ... 
)    _eo_add_common(klass, parent, EINA_FALSE, ##__VA_ARGS__)

Create a new object and call its constructor(If it exits).

The object returned by this function will always have 1 ref (reference count) irrespective of whether the parent is NULL or not. If the object is created using this function, then it would automatically gets deleted when the parent object is deleted. There is no need to call eo_unref on the child. This is convenient in C.

If you want a more "consistent" behaviour, take a look at eo_add_ref.

Parameters
klassthe class of the object to create.
parentthe parent to set to the object.
...The ops to run.
Returns
An handle to the new object on success, NULL otherwise.

Referenced by ecore_animator_add(), ecore_animator_timeline_add(), ecore_con_client_fd_get(), ecore_con_eet_client_new(), ecore_con_eet_server_new(), ecore_con_server_add(), ecore_con_server_connect(), ecore_con_shutdown(), ecore_con_url_new(), ecore_exe_pipe_run(), ecore_idle_enterer_add(), ecore_idle_enterer_before_add(), ecore_idle_exiter_add(), ecore_idler_add(), ecore_init(), ecore_job_add(), ecore_main_fd_handler_active_set(), ecore_poller_add(), ecore_timer_add(), ecore_timer_dump(), edje_audio_channel_mute_get(), edje_edit_object_add(), emotion_object_add(), evas_new(), evas_object_box_add(), evas_object_grid_add(), evas_object_image_add(), evas_object_polygon_add(), evas_object_rectangle_add(), evas_object_smart_add(), evas_object_table_add(), evas_object_text_add(), evas_object_textblock_add(), and evas_object_textgrid_add().

#define eo_add_ref (   klass,
  parent,
  ... 
)    _eo_add_common(klass, parent, EINA_TRUE, ##__VA_ARGS__)

Create a new object and call its constructor(If it exists).

The object returned by this function has 1 ref for itself, 1 ref from the parent (if exists) and possible other refs if were added during construction. If a child object is created using this, then it won't get deleted when the parent object is deleted until you manually remove the ref by calling eo_unref().

Parameters
klassthe class of the object to create.
parentthe parent to set to the object.
...The ops to run.
Returns
An handle to the new object on success, NULL otherwise.

Referenced by eo::abstract_class::abstract_class(), ecore::animator::animator(), efl::gfx::gradient::base::base(), efl::gfx::base::base(), efl::vg::base::base(), efl::model::base::base(), eo::base::base(), evas::box::box(), evas::canvas3d::camera::camera(), evas::canvas::canvas(), evas::clickable_interface::clickable_interface(), evas::common_interface::common_interface(), efl::vg::container::container(), efl::control::control(), evas::draggable_interface::draggable_interface(), edje::edit::edit(), ecore::idle::enterer::enterer(), ecore::exe::exe(), ecore::idle::exiter::exiter(), efl::file::file(), efl::gfx::fill::fill(), efl::gfx::filter::filter(), evas::filter::filter(), efl::vg::gradient::gradient(), efl::vg::gradient_linear::gradient_linear(), efl::vg::gradient_radial::gradient_radial(), evas::grid::grid(), ecore::idler::idler(), efl::image::image(), evas::image::image(), efl::eo::inherit< D, E >::inherit(), ecore::job::job(), evas::canvas3d::light::light(), evas::line::line(), efl::gfx::gradient::linear::linear(), evas::canvas3d::material::material(), evas::canvas3d::mesh::mesh(), eio::model::model(), eldbus::model_arguments::model_arguments(), eldbus::model_connection::model_connection(), eldbus::model_method::model_method(), eldbus::model_object::model_object(), eldbus::model_proxy::model_proxy(), eldbus::model_signal::model_signal(), evas::canvas3d::node::node(), evas::canvas3d::object::object(), edje::object::object(), evas::object::object(), evas::object_smart::object_smart(), evas::out::out(), ecore::parent::parent(), efl::player::player(), ecore::poller::poller(), evas::polygon::polygon(), evas::canvas3d::primitive::primitive(), efl::gfx::gradient::radial::radial(), evas::rectangle::rectangle(), efl::vg::root_node::root_node(), evas::canvas3d::scene::scene(), evas::scrollable_interface::scrollable_interface(), evas::selectable_interface::selectable_interface(), efl::vg::shape::shape(), efl::gfx::shape::shape(), evas::signal_interface::signal_interface(), evas::smart_clipped::smart_clipped(), efl::gfx::stack::stack(), evas::table::table(), efl::text::text(), evas::text::text(), efl::text_properties::text_properties(), evas::textblock::textblock(), evas::textgrid::textgrid(), evas::canvas3d::texture::texture(), ecore::timer::timer(), evas::vg::vg(), efl::gfx::view::view(), and evas::zoomable_interface::zoomable_interface().

#define eo_data_xref (   obj,
  klass,
  ref_obj 
)    eo_data_xref_internal(__FILE__, __LINE__, obj, klass, ref_obj)

Use this macro if you want to associate a referencer object.

Convenience macro around eo_data_xref_internal()

#define eo_data_ref (   obj,
  klass 
)    eo_data_xref_internal(__FILE__, __LINE__, obj, klass, (const Eo *)obj)
#define eo_data_xunref (   obj,
  data,
  ref_obj 
)    eo_data_xunref_internal(obj, data, ref_obj)

Use this function if you used eo_data_xref to reference the data.

Convenience macro around eo_data_xunref_internal()

See also
eo_data_xref()
#define eo_data_unref (   obj,
  data 
)    eo_data_xunref_internal(obj, data, obj)

Use this function if you used eo_data_ref to reference the data.

Convenience macro around eo_data_unref_internal()

See also
eo_data_ref()

Referenced by ecore_timer_dump(), edje_edit_object_add(), evas_gl_free(), evas_gl_new(), and evas_object_smart_member_del().

#define eo_xref (   obj,
  ref_obj 
)    eo_xref_internal(__FILE__, __LINE__, obj, ref_obj)

Convenience macro around eo_xref_internal()

See also
eo_xref()

Typedef Documentation

The basic class type - should be removed, just for compat.

Deprecated:
Eo_Event_Cb

An event callback prototype.

Parameters
dataThe user data registered with the callback.
objThe object which initiated the event.
descThe event's description.
event_infoadditional data passed with the event.
Returns
EO_CALLBACK_STOP to stop calling additional callbacks for the event, EO_CALLBACK_CONTINUE to continue.

An item in an array of callback desc/func.

See also eo_event_callback_array_add.

typedef short Eo_Callback_Priority

Callback priority value.

Range is -32k - 32k. The lower the number, the higher the priority.

See EO_CALLBACK_PRIORITY_AFTER, EO_CALLBACK_PRIORITY_BEFORE EO_CALLBACK_PRIORITY_DEFAULT

Enumeration Type Documentation

Enumerator
EO_OP_TYPE_INVALID 

Invalid op.

EO_OP_TYPE_REGULAR 

Regular op.

EO_OP_TYPE_CLASS 

Class op - a class op.

Like static in Java/C++.

EO_OP_TYPE_REGULAR_OVERRIDE 

Regular op override (previously defined)

EO_OP_TYPE_CLASS_OVERRIDE 

Class op override (previously defined)

Function Documentation

EAPI Eina_Bool eo_init ( void  )
EAPI Eina_Bool eo_shutdown ( void  )
EAPI const Eo_Class* eo_class_get ( const Eo obj)

Gets the class of the object.

Parameters
objThe object to work on
Returns
The object's class.
See also
eo_class_name_get()
EAPI void* eo_data_get ( const Eo obj,
const Eo_Class klass 
)

Get a pointer to the data of an object for a specific class.

Parameters
objthe object to work on.
klassthe klass associated with the data.
Returns
a pointer to the data.
Deprecated:
use eo_data_scope_get or eo_data_ref instead.

References eo_data_scope_get().

EAPI void* eo_data_scope_get ( const Eo obj,
const Eo_Class klass 
)

Get a pointer to the data of an object for a specific class.

The data reference count is not incremented. The pointer must be used only in the scope of the function and its callees.

Parameters
objthe object to work on.
klassthe klass associated with the data.
Returns
a pointer to the data.
See also
eo_data_ref()
eo_data_unref()

References ERR.

Referenced by ecore_animator_custom_tick(), ecore_animator_del(), ecore_con_client_data_get(), ecore_con_client_data_set(), ecore_con_client_del(), ecore_con_client_fd_get(), ecore_con_client_ip_get(), ecore_con_client_send(), ecore_con_eet_client_connect_callback_add(), ecore_con_eet_client_connect_callback_del(), ecore_con_eet_client_disconnect_callback_add(), ecore_con_eet_client_disconnect_callback_del(), ecore_con_eet_server_connect_callback_add(), ecore_con_eet_server_connect_callback_del(), ecore_con_eet_server_disconnect_callback_add(), ecore_con_eet_server_disconnect_callback_del(), ecore_con_server_connect(), ecore_con_server_data_get(), ecore_con_server_data_set(), ecore_con_server_del(), ecore_con_shutdown(), ecore_con_ssl_client_upgrade(), ecore_con_ssl_server_cafile_add(), ecore_con_ssl_server_cert_add(), ecore_con_ssl_server_crl_add(), ecore_con_ssl_server_privkey_add(), ecore_con_ssl_server_upgrade(), ecore_con_ssl_server_verify(), ecore_con_ssl_server_verify_basic(), ecore_con_ssl_server_verify_name_get(), ecore_con_ssl_server_verify_name_set(), ecore_con_url_additional_header_add(), ecore_con_url_additional_headers_clear(), ecore_con_url_cookies_clear(), ecore_con_url_cookies_file_add(), ecore_con_url_cookies_ignore_old_session_set(), ecore_con_url_cookies_init(), ecore_con_url_cookies_jar_file_set(), ecore_con_url_cookies_jar_write(), ecore_con_url_cookies_session_clear(), ecore_con_url_custom_new(), ecore_con_url_data_get(), ecore_con_url_data_set(), ecore_con_url_fd_set(), ecore_con_url_free(), ecore_con_url_ftp_upload(), ecore_con_url_ftp_use_epsv_set(), ecore_con_url_http_version_set(), ecore_con_url_httpauth_set(), ecore_con_url_proxy_password_set(), ecore_con_url_proxy_set(), ecore_con_url_proxy_username_set(), ecore_con_url_received_bytes_get(), ecore_con_url_response_headers_get(), ecore_con_url_ssl_ca_set(), ecore_con_url_ssl_verify_peer_set(), ecore_con_url_status_code_get(), ecore_con_url_time(), ecore_con_url_timeout_set(), ecore_con_url_verbose_set(), ecore_exe_auto_limits_set(), ecore_exe_callback_pre_free_set(), ecore_exe_close_stdin(), ecore_exe_data_get(), ecore_exe_data_set(), ecore_exe_event_data_get(), ecore_exe_flags_get(), ecore_exe_free(), ecore_exe_hup(), ecore_exe_interrupt(), ecore_exe_kill(), ecore_exe_pid_get(), ecore_exe_pipe_run(), ecore_exe_quit(), ecore_exe_send(), ecore_exe_signal(), ecore_exe_tag_get(), ecore_exe_tag_set(), ecore_exe_terminate(), ecore_idle_enterer_del(), ecore_idle_exiter_del(), ecore_idler_del(), ecore_job_del(), ecore_poller_del(), ecore_timer_dump(), edje_box_layout_register(), edje_edit_sound_tones_list_get(), edje_edit_source_generate(), edje_evas_global_perspective_get(), edje_language_set(), edje_perspective_global_set(), edje_perspective_set(), eo_data_get(), evas_device_add(), evas_device_emulation_source_get(), evas_device_list(), evas_device_parent_set(), evas_device_pop(), evas_device_push(), evas_event_callback_del(), evas_event_callback_del_full(), evas_event_callback_priority_add(), evas_event_thaw_eval(), evas_font_path_global_list(), evas_map_util_clockwise_get(), evas_map_util_points_populate_from_object(), evas_map_util_points_populate_from_object_full(), evas_object_del(), evas_object_event_callback_del(), evas_object_event_callback_del_full(), evas_object_event_callback_priority_add(), evas_object_image_add(), evas_object_image_alpha_mask_set(), evas_object_image_data_convert(), evas_object_image_fill_set(), evas_object_image_fill_spread_set(), evas_object_image_memfile_set(), evas_object_image_native_surface_set(), evas_object_image_pixels_import(), evas_object_image_preload(), evas_object_image_reload(), evas_object_image_size_get(), evas_object_image_size_set(), evas_object_image_source_unset(), evas_object_layer_get(), evas_object_polygon_add(), evas_object_rectangle_add(), evas_object_ref(), evas_object_ref_get(), evas_object_smart_add(), evas_object_smart_callback_call(), evas_object_smart_callback_del(), evas_object_smart_callback_del_full(), evas_object_smart_callback_priority_add(), evas_object_smart_interface_data_get(), evas_object_smart_member_add(), evas_object_smart_member_del(), evas_object_stack_above(), evas_object_stack_below(), evas_object_text_add(), evas_object_text_text_get(), evas_object_textblock_add(), evas_object_textblock_clear(), evas_object_textblock_text_markup_prepend(), evas_object_textgrid_add(), evas_object_top_at_pointer_get(), evas_object_unref(), evas_post_event_callback_push(), evas_post_event_callback_remove(), evas_post_event_callback_remove_full(), evas_render_updates_free(), evas_smart_legacy_type_register(), evas_string_char_len_get(), evas_textblock_cursor_at_format_set(), evas_textblock_cursor_char_coord_set(), evas_textblock_cursor_char_delete(), evas_textblock_cursor_char_geometry_get(), evas_textblock_cursor_char_next(), evas_textblock_cursor_char_prev(), evas_textblock_cursor_compare(), evas_textblock_cursor_content_get(), evas_textblock_cursor_copy(), evas_textblock_cursor_eol_get(), evas_textblock_cursor_format_append(), evas_textblock_cursor_format_get(), evas_textblock_cursor_format_is_visible_get(), evas_textblock_cursor_format_item_geometry_get(), evas_textblock_cursor_format_next(), evas_textblock_cursor_format_prepend(), evas_textblock_cursor_format_prev(), evas_textblock_cursor_free(), evas_textblock_cursor_geometry_bidi_get(), evas_textblock_cursor_geometry_get(), evas_textblock_cursor_is_format(), evas_textblock_cursor_line_char_first(), evas_textblock_cursor_line_char_last(), evas_textblock_cursor_line_coord_set(), evas_textblock_cursor_line_geometry_get(), evas_textblock_cursor_line_set(), evas_textblock_cursor_paragraph_char_first(), evas_textblock_cursor_paragraph_char_last(), evas_textblock_cursor_paragraph_first(), evas_textblock_cursor_paragraph_last(), evas_textblock_cursor_paragraph_next(), evas_textblock_cursor_paragraph_prev(), evas_textblock_cursor_paragraph_text_get(), evas_textblock_cursor_paragraph_text_length_get(), evas_textblock_cursor_pen_geometry_get(), evas_textblock_cursor_pos_get(), evas_textblock_cursor_pos_set(), evas_textblock_cursor_range_delete(), evas_textblock_cursor_range_formats_get(), evas_textblock_cursor_range_geometry_get(), evas_textblock_cursor_range_simple_geometry_get(), evas_textblock_cursor_range_text_get(), evas_textblock_cursor_text_append(), evas_textblock_cursor_text_prepend(), evas_textblock_cursor_visible_range_get(), evas_textblock_cursor_word_end(), evas_textblock_cursor_word_start(), evas_textblock_node_format_prev_get(), evas_textblock_string_escape_get(), evas_textblock_style_get(), evas_textblock_style_set(), and evas_textblock_text_utf8_to_markup().

EAPI void* eo_data_xref_internal ( const char *  file,
int  line,
const Eo obj,
const Eo_Class klass,
const Eo ref_obj 
)

Get a pointer to the data of an object for a specific class and increment the data reference count.

Parameters
objthe object to work on.
klassthe klass associated with the data.
ref_objthe object that references the data.
filethe call's filename.
linethe call's line number.
Returns
a pointer to the data.
See also
eo_data_xunref_internal()

References ERR.

EAPI void eo_data_xunref_internal ( const Eo obj,
void *  data,
const Eo ref_obj 
)

Decrement the object data reference count by 1.

Parameters
objthe object to work on.
dataa pointer to the data to unreference
filethe call's filename.
linethe call's line number.
See also
eo_data_xref_internal()
EAPI Eo* eo_ref ( const Eo obj)

Increment the object's reference count by 1.

Parameters
objthe object to work on.
Returns
The object passed.

It's very easy to get a refcount leak and start leaking memory because of a forgotten unref or an extra ref. That is why there are eo_xref and eo_xunref that will make debugging easier in such a case. Therefor, these functions should only be used in small scopes, i.e at the start of some section in which the object may get freed, or if you know what you are doing.

See also
eo_unref()
eo_ref_get()

Referenced by evas_object_image_alpha_mask_set(), evas_object_ref(), evas_smart_legacy_type_register(), and efl::eina::accessor< T, typename std::enable_if< std::is_base_of<::efl::eo::concrete, T >::value, T >::type >::operator[]().

EAPI void eo_unref ( const Eo obj)

Decrement the object's reference count by 1 and free it if needed.

Parameters
objthe object to work on.
See also
eo_ref()
eo_ref_get()

Referenced by ecore_shutdown(), eo_del(), evas_free(), evas_object_image_alpha_mask_set(), evas_object_unref(), and evas_smart_legacy_type_register().

EAPI int eo_ref_get ( const Eo obj)

Return the ref count of the object passed.

Parameters
objthe object to work on.
Returns
the ref count of the object.
See also
eo_ref()
eo_unref()

References EINA_INLIST_FOREACH, EINA_INLIST_GET, eina_inlist_prepend(), eina_inlist_remove(), EINA_LIKELY, EINA_TRUE, EINA_UNLIKELY, EO_CLASS_TYPE_MIXIN, and ERR.

Referenced by evas_free().

EAPI void eo_del ( const Eo obj)

Unrefs the object and reparents it to NULL.

Parameters
objthe object to work on.

Because eo_del() unrefs and reparents to NULL, it doesn't really delete the object.

See also
eo_unref()
eo_parent_set()

References eo_unref().

Referenced by ecore_con_client_fd_get(), ecore_con_eet_server_free(), ecore_con_shutdown(), ecore_con_url_free(), ecore_exe_free(), edje_audio_channel_mute_get(), and evas_object_del().

EAPI Eo* eo_xref_internal ( const char *  file,
int  line,
Eo obj,
const Eo ref_obj 
)

Increment the object's reference count by 1 (and associate the ref with ref_obj)

Parameters
objthe object to work on.
ref_objthe object that references obj.
filethe call's filename.
linethe call's line number.
Returns
The object passed (obj)

People should not use this function, use eo_xref instead. A compile flag my make it and eobj_xunref() behave the same as eobj_ref() and eobj_unref() respectively. So this should be used wherever possible.

See also
eo_xunref()

References EINA_INLIST_GET, and eina_inlist_prepend().

EAPI void eo_xunref ( Eo obj,
const Eo ref_obj 
)

Decrement the object's reference count by 1 and free it if needed.

Will free the ref associated with ref_obj).

Parameters
objthe object to work on.
ref_objthe object that references obj.

This function only enforces the checks for object association. I.e don't rely on it. If such enforces are compiled out, this function behaves the same as eo_unref().

See also
eo_xref_internal()

References EINA_INLIST_FOREACH, EINA_INLIST_GET, eina_inlist_remove(), and ERR.

EAPI void eo_manual_free_set ( Eo obj,
Eina_Bool  manual_free 
)

Enable or disable the manual free feature.

Parameters
objthe object to work on.
manual_freeindicates if the free is manual (EINA_TRUE) or automatic (EINA_FALSE).

The developer is in charge to call the function eo_manual_free to free the memory allocated for this object.

Do not use, unless you really know what you are doing. It's used by Evas because evas wants to keep its private data available even after the object is deleted. Setting this to true makes Eo destruct the object but not free the private data or the object itself.

See also
eo_manual_free()

Referenced by ecore_animator_custom_tick(), ecore_con_url_free(), ecore_con_url_new(), ecore_idle_enterer_del(), ecore_idle_exiter_add(), ecore_idle_exiter_del(), ecore_idler_add(), ecore_idler_del(), ecore_job_add(), ecore_job_del(), ecore_poller_add(), ecore_poller_del(), ecore_timer_add(), ecore_timer_dump(), and evas_object_del().

EAPI Eina_Bool eo_manual_free ( Eo obj)

Frees the object.

Parameters
objthe object to work on. This function must be called by the developer if the function eo_manual_free_set has been called before with the parameter EINA_TRUE. An error will be printed if this function is called when the manual free option is not set to EINA_TRUE or the number of refs is not 0.
Returns
EINA_TRUE if successfully freed. EINA_FALSE otherwise.
See also
eo_manual_free_set()

References EINA_FALSE, EINA_TRUE, and ERR.

Referenced by ecore_animator_custom_tick(), ecore_con_url_proxy_password_set(), ecore_idle_enterer_del(), ecore_idle_exiter_del(), ecore_idler_del(), ecore_job_del(), ecore_poller_del(), and ecore_timer_dump().

EAPI Eina_Bool eo_destructed_is ( const Eo obj)

Checks if the object was already descructed (only relevant for manual_free objects).

Parameters
objthe object to check. This function checks if the object was already destructed (but not alraedy freed). It should only be used with objects that are supposed to be manually freed, but not yet freed (but possibly destructed).
See also
eo_manual_free_set()

References EINA_FALSE.

Referenced by ecore_animator_custom_tick(), ecore_idle_enterer_del(), ecore_idle_exiter_del(), ecore_idler_del(), ecore_job_del(), ecore_poller_del(), and ecore_timer_dump().

Variable Documentation

EAPI Eina_Spinlock _eo_class_creation_lock

This variable is used for locking purposes in the class_get function defined in EO_DEFINE_CLASS.

This is just to work around the fact that we need to init locks before using them. Don't touch it if you don't know what you are doing.

Referenced by eo_class_new(), eo_init(), and eo_shutdown().

_eo_class_creation_lock

This variable is used for locking purposes in the class_get function defined in EO_DEFINE_CLASS.

This is just to work around the fact that we need to init locks before using them. Don't touch it if you don't know what you are doing.

Referenced by eo_class_new(), eo_init(), and eo_shutdown().