Eo

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_Class * | eo_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 Eo * | eo_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 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) 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

## ◆ EO_FUNC_COMMON_OP

#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; \
EO_NOOP
#define EO_NOOP
A special Eo_Op meaning "No operation".
Definition: Eo.h:239
EINA_UNLIKELY
#define EINA_UNLIKELY(exp)
Definition: eina_types.h:309
_Eo_Call_Cache
Definition: Eo.h:461

## ◆ EO_FUNC_BODY

#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; \
}
Eo
struct _Eo_Opaque Eo
The basic Object type.
Definition: Eo.h:106

## ◆ EO_VOID_FUNC_BODY

#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); \
}
Eo
struct _Eo_Opaque Eo
The basic Object type.
Definition: Eo.h:106

## ◆ EO_FUNC_BODYV

#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; \
}
Eo
struct _Eo_Opaque Eo
The basic Object type.
Definition: Eo.h:106

## ◆ EO_VOID_FUNC_BODYV

#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); \
}
Eo
struct _Eo_Opaque Eo
The basic Object type.
Definition: Eo.h:106

## ◆ _eo_do_common

#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)

## ◆ _eo_do_common_ret

#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 \
)

## ◆ eo_do_part

#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)

## ◆ _eo_add_common

#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()) \
)
EINA_FALSE
#define EINA_FALSE
boolean value FALSE (numerical value 0)
Definition: eina_types.h:338
efl::eo::parent
parent_expr const parent
Placeholder for the parent argument.
Definition: eo_concrete.hh:301
Eo
struct _Eo_Opaque Eo
The basic Object type.
Definition: Eo.h:106

## ◆ eo_add

#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

  klass | the class of the object to create.
  parent | the 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_eet_client_new(), ecore_con_eet_server_new(), ecore_con_server_add(), ecore_con_server_connect(), 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_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_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().

## ◆ eo_add_ref

#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

  klass | the class of the object to create.
  parent | the 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(), efl::gfx::gradient::base::base(), efl::gfx::base::base(), evas::common_interface::common_interface(), efl::control::control(), efl::gfx::fill::fill(), efl::gfx::filter::filter(), evas::filter::filter(), efl::image::image(), efl::gfx::gradient::linear::linear(), efl::player::player(), efl::gfx::gradient::radial::radial(), efl::gfx::shape::shape(), evas::signal_interface::signal_interface(), efl::gfx::stack::stack(), efl::text::text(), efl::text_properties::text_properties(), and efl::gfx::view::view().

## ◆ eo_data_xref

#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()

## ◆ eo_data_ref

#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.

Convenience macro around eo_data_xref_internal()

Referenced by edje_edit_object_add(), and evas_gl_new().

## ◆ eo_data_xunref

#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()

## ◆ eo_data_unref

#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 evas_gl_free(), and evas_gl_new().

## ◆ eo_xref

#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

## ◆ Eo_Class

Eo_Class

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

Deprecated:

## ◆ Eo_Event_Cb

Eo_Event_Cb

An event callback prototype.

Parameters

  data | The user data registered with the callback.
  obj | The object which initiated the event.
  desc | The event's description.
  event_info | additional data passed with the event.

Returns
  EO_CALLBACK_STOP to stop calling additional callbacks for the event, EO_CALLBACK_CONTINUE to continue.

## ◆ Eo_Callback_Array_Item

typedef struct _Eo_Callback_Array_Item Eo_Callback_Array_Item

An item in an array of callback desc/func.

See also eo_event_callback_array_add.

## ◆ Eo_Callback_Priority

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

## ◆ _Eo_Op_Type

enum _Eo_Op_Type

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

## ◆ eo_init()

EAPI Eina_Bool eo_init | ( | void |  | ) |

Init the eo subsystem.

Returns
  `EINA_TRUE` on success.

See also
  eo_shutfown()

References _eo_class_creation_lock, EINA_FALSE, eina_hash_pointer_new(), eina_hash_string_superfast_new(), eina_init(), eina_log_domain_register(), EINA_LOG_ERR, eina_log_timing(), eina_magic_string_static_set(), eina_spinlock_new(), and EINA_TRUE.

Referenced by ecore_audio_init(), ecore_init(), ector_init(), and evas_init().

## ◆ eo_shutdown()

EAPI Eina_Bool eo_shutdown | ( | void |  | ) |

Shutdown the eo subsystem.

Returns
  `EINA_TRUE` on success.

See also
  eo_init()

## ◆ eo_class_get()

EAPI const Eo_Class* eo_class_get | ( | const Eo * | obj | ) |

Gets the class of the object.

Parameters

  obj | The object to work on

Returns
  The object's class.

See also
  eo_class_name_get()

## ◆ eo_data_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

  obj | the object to work on.
  klass | the 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().

## ◆ 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

  obj | the object to work on.
  klass | the 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_del(), ecore_con_client_data_get(), ecore_con_client_data_set(), ecore_con_client_del(), 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_data_get(), ecore_con_server_data_set(), ecore_con_server_del(), 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_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_job_del(), ecore_poller_del(), edje_edit_sound_tones_list_get(), edje_evas_global_perspective_get(), 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_native_surface_set(), evas_object_image_pixels_import(), evas_object_image_reload(), evas_object_ref(), evas_object_ref_get(), 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_del(), evas_object_textblock_add(), evas_object_textblock_clear(), evas_object_textblock_text_markup_prepend(), 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_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(), and evas_textblock_style_set().

## ◆ eo_data_xref_internal()

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

  obj | the object to work on.
  klass | the klass associated with the data.
  ref_obj | the object that references the data.
  file | the call's filename.
  line | the call's line number.

Returns
  a pointer to the data.

See also
  eo_data_xunref_internal()

References ERR.

## ◆ eo_data_xunref_internal()

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

Decrement the object data reference count by 1.

Parameters

  obj | the object to work on.
  data | a pointer to the data to unreference
  file | the call's filename.
  line | the call's line number.

See also
  eo_data_xref_internal()

## ◆ eo_ref()

EAPI Eo* eo_ref | ( | const Eo * | obj | ) |

Increment the object's reference count by 1.

Parameters

  obj | the 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(), and evas_smart_legacy_type_register().

## ◆ eo_unref()

EAPI void eo_unref | ( | const Eo * | obj | ) |

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

Parameters

  obj | the object to work on.

See also
  eo_ref()
  eo_ref_get()

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

## ◆ eo_ref_get()

EAPI int eo_ref_get | ( | const Eo * | obj | ) |

Return the ref count of the object passed.

Parameters

  obj | the 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().

## ◆ eo_del()

EAPI void eo_del | ( | const Eo * | obj | ) |

Unrefs the object and reparents it to NULL.

Parameters

  obj | the 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()

Referenced by ecore_con_eet_server_free(), ecore_exe_free(), edje_audio_channel_mute_get(), and evas_object_del().

## ◆ eo_xref_internal()

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

  obj | the object to work on.
  ref_obj | the object that references obj.
  file | the call's filename.
  line | the 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().

## ◆ eo_xunref()

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

  obj | the object to work on.
  ref_obj | the 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.

## ◆ eo_manual_free_set()

EAPI void eo_manual_free_set | ( | Eo * | obj,
|  | Eina_Bool | manual_free
| ) |  |

Enable or disable the manual free feature.

Parameters

  obj | the object to work on.
  manual_free | indicates 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_idle_exiter_add(), ecore_idler_add(), ecore_job_add(), ecore_poller_add(), ecore_timer_add(), and evas_object_del().

## ◆ eo_manual_free()

EAPI Eina_Bool eo_manual_free | ( | Eo * | obj | ) |

Frees the object.

Parameters

  obj | the 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.

## ◆ eo_destructed_is()

EAPI Eina_Bool eo_destructed_is | ( | const Eo * | obj | ) |

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

Parameters

  obj | the 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.

## Variable Documentation

## ◆ _eo_class_creation_lock [1/2]

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_init().

## ◆ _eo_class_creation_lock [2/2]

_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_init().