Eo Generic Object System

The Eo generic object system. More...

Modules

 Eo's Event Handling
 
 Eo Class
 
 Composite Objects.
 
 Eo's Base class.
 

Macros

#define EO_TYPECHECK(type, x)
 Checks x is castable to type "type" and casts it to it.
 
#define EO_NOOP   ((Eo_Op) 0)
 A special Eo_Op meaning "No operation".
 
#define eo_do(obj,...)   eo_do_internal(obj, EO_OP_TYPE_REGULAR, __VA_ARGS__, EO_NOOP)
 A convenience wrapper around eo_do_internal()
 
#define eo_class_do(klass,...)   eo_class_do_internal(klass, __VA_ARGS__, EO_NOOP)
 A convenience wrapper around eo_class_do_internal()
 
#define eo_do_super(obj,...)   eo_do_super_internal(obj, EO_OP_TYPE_REGULAR, __VA_ARGS__)
 Calls the super function for the specific op.
 
#define eo_class_do_super(klass,...)   eo_class_do_super_internal(klass, __VA_ARGS__)
 Calls the super function for the specific op.
 
#define eo_error_set(obj)   eo_error_set_internal(obj, __FILE__, __LINE__)
 Notify eo that there was an error when constructing, destructing or calling a function of the object.
 
#define eo_add(klass, parent,...)
 Create a new object with the default constructor.
 
#define eo_add_custom(klass, parent,...)
 Create a new object with a custom constructor.
 
#define eo_xref(obj, ref_obj)   eo_xref_internal(obj, ref_obj, __FILE__, __LINE__)
 Convenience macro around eo_xref_internal()
 

Typedefs

typedef struct _Eo Eo
 The basic Object type.
 
typedef unsigned int Eo_Op
 The Eo operation type id.
 
typedef void(* eo_op_func_type )(Eo *, void *class_data, va_list *list)
 The type of the Op functions.
 
typedef void(* eo_op_func_type_class )(const Eo_Class *, va_list *list)
 The type of the class Op functions.
 

Functions

Eina_Bool eo_init (void)
 Init the eo subsystem.
 
Eina_Bool eo_shutdown (void)
 Shutdown the eo subsystem.
 
Eina_Bool eo_do_internal (Eo *obj, Eo_Op_Type op_type,...)
 Calls op functions of an object.
 
Eina_Bool eo_class_do_internal (const Eo_Class *klass,...)
 Calls op functions of a class.
 
Eina_Bool eo_do_super_internal (Eo *obj, Eo_Op_Type op_type, Eo_Op op,...)
 Calls the super function for the specific op.
 
Eina_Bool eo_class_do_super_internal (const Eo_Class *klass, Eo_Op op,...)
 Calls the super function for the specific op.
 
const Eo_Classeo_class_get (const Eo *obj)
 Gets the class of the object.
 
Eoeo_add_internal (const Eo_Class *klass, Eo *parent,...)
 Create a new object.
 
Eoeo_parent_get (const Eo *obj)
 Get the parent of an object.
 
Eina_Bool eo_parent_set (Eo *obj, const Eo *parent)
 Set the parent of an object.
 
void * eo_data_get (const Eo *obj, const Eo_Class *klass)
 Get a pointer to the data of an object for a specific class.
 
Eoeo_ref (const Eo *obj)
 Increment the object's reference count by 1.
 
void eo_unref (const Eo *obj)
 Decrement the object's reference count by 1 and free it if needed.
 
int eo_ref_get (const Eo *obj)
 Return the ref count of the object passed.
 
void eo_del (const Eo *obj)
 Unrefs the object and reparents it to NULL.
 
Eoeo_xref_internal (Eo *obj, const Eo *ref_obj, const char *file, int line)
 Increment the object's reference count by 1 (and associate the ref with ref_obj)
 
void eo_xunref (Eo *obj, const Eo *ref_obj)
 Decrement the object's reference count by 1 and free it if needed.
 
void eo_manual_free_set (Eo *obj, Eina_Bool manual_free)
 Enable or disable the manual free feature.
 
void eo_manual_free (Eo *obj)
 Frees the object.
 
Eina_Bool eo_destructed_is (const Eo *obj)
 Checks if the object was already descructed (only relevant for manual_free objects).
 

Detailed Description

The Eo generic object system.

It was designed to be the base object system for the EFL.

Macro Definition Documentation

#define EO_TYPECHECK (   type,
 
)
Value:
({ \
type __x; \
__x = x; \
(type) __x; \
})

Checks x is castable to type "type" and casts it to it.

Parameters
typeThe C type to check against.
xthe variable to test and cast.
#define eo_do (   obj,
  ... 
)    eo_do_internal(obj, EO_OP_TYPE_REGULAR, __VA_ARGS__, EO_NOOP)

A convenience wrapper around eo_do_internal()

See Also
eo_do_internal

Referenced by ecore_animator_freeze(), ecore_animator_thaw(), ecore_poller_poller_interval_get(), ecore_poller_poller_interval_set(), ecore_timer_delay(), ecore_timer_freeze(), ecore_timer_interval_get(), ecore_timer_interval_set(), ecore_timer_pending_get(), ecore_timer_reset(), ecore_timer_thaw(), evas_coord_screen_x_to_world(), evas_coord_screen_y_to_world(), evas_coord_world_x_to_screen(), evas_coord_world_y_to_screen(), evas_damage_rectangle_add(), evas_data_attach_get(), evas_data_attach_set(), evas_engine_info_get(), evas_engine_info_set(), evas_event_default_flags_get(), evas_event_default_flags_set(), evas_event_down_count_get(), evas_event_feed_hold(), evas_event_feed_key_down(), evas_event_feed_key_up(), evas_event_feed_mouse_cancel(), evas_event_feed_mouse_down(), evas_event_feed_mouse_in(), evas_event_feed_mouse_move(), evas_event_feed_mouse_out(), evas_event_feed_mouse_up(), evas_event_feed_mouse_wheel(), evas_event_freeze(), evas_event_freeze_get(), evas_event_refeed_event(), evas_event_thaw(), evas_focus_get(), evas_focus_in(), evas_focus_out(), evas_focus_state_get(), evas_font_available_list(), evas_font_cache_flush(), evas_font_cache_get(), evas_font_cache_set(), evas_font_hinting_can_hint(), evas_font_hinting_get(), evas_font_hinting_set(), evas_font_path_append(), evas_font_path_clear(), evas_font_path_list(), evas_font_path_prepend(), evas_image_cache_flush(), evas_image_cache_get(), evas_image_cache_reload(), evas_image_cache_set(), evas_image_max_size_get(), evas_key_lock_add(), evas_key_lock_del(), evas_key_lock_get(), evas_key_lock_off(), evas_key_lock_on(), evas_key_modifier_add(), evas_key_modifier_del(), evas_key_modifier_get(), evas_key_modifier_mask_get(), evas_key_modifier_off(), evas_key_modifier_on(), evas_nochange_pop(), evas_nochange_push(), evas_norender(), evas_object_above_get(), evas_object_anti_alias_get(), evas_object_anti_alias_set(), evas_object_below_get(), evas_object_bottom_get(), evas_object_box_accessor_new(), evas_object_box_add_to(), evas_object_box_align_get(), evas_object_box_align_set(), evas_object_box_append(), evas_object_box_insert_after(), evas_object_box_insert_at(), evas_object_box_insert_before(), evas_object_box_iterator_new(), evas_object_box_layout_set(), evas_object_box_option_property_id_get(), evas_object_box_option_property_name_get(), evas_object_box_option_property_vget(), evas_object_box_option_property_vset(), evas_object_box_padding_get(), evas_object_box_padding_set(), evas_object_box_prepend(), evas_object_box_remove(), evas_object_box_remove_all(), evas_object_box_remove_at(), evas_object_clip_get(), evas_object_clip_set(), evas_object_clip_unset(), evas_object_clipees_get(), evas_object_color_get(), evas_object_color_set(), evas_object_data_del(), evas_object_data_get(), evas_object_data_set(), evas_object_evas_get(), evas_object_focus_get(), evas_object_focus_set(), evas_object_freeze_events_get(), evas_object_freeze_events_set(), evas_object_geometry_get(), evas_object_grid_accessor_new(), evas_object_grid_add_to(), evas_object_grid_children_get(), evas_object_grid_clear(), evas_object_grid_iterator_new(), evas_object_grid_mirrored_get(), evas_object_grid_mirrored_set(), evas_object_grid_pack(), evas_object_grid_pack_get(), evas_object_grid_size_get(), evas_object_grid_size_set(), evas_object_grid_unpack(), evas_object_hide(), evas_object_image_alpha_get(), evas_object_image_alpha_set(), evas_object_image_animated_frame_count_get(), evas_object_image_animated_frame_duration_get(), evas_object_image_animated_frame_set(), evas_object_image_animated_get(), evas_object_image_animated_loop_count_get(), evas_object_image_animated_loop_type_get(), evas_object_image_border_center_fill_get(), evas_object_image_border_center_fill_set(), evas_object_image_border_get(), evas_object_image_border_scale_get(), evas_object_image_border_scale_set(), evas_object_image_border_set(), evas_object_image_colorspace_get(), evas_object_image_colorspace_set(), evas_object_image_content_hint_get(), evas_object_image_content_hint_set(), evas_object_image_data_convert(), evas_object_image_data_copy_set(), evas_object_image_data_get(), evas_object_image_data_set(), evas_object_image_data_update_add(), evas_object_image_file_get(), evas_object_image_file_set(), evas_object_image_fill_get(), evas_object_image_fill_set(), evas_object_image_fill_spread_get(), evas_object_image_fill_spread_set(), evas_object_image_filled_get(), evas_object_image_filled_set(), evas_object_image_load_dpi_get(), evas_object_image_load_dpi_set(), evas_object_image_load_error_get(), evas_object_image_load_orientation_get(), evas_object_image_load_orientation_set(), evas_object_image_load_region_get(), evas_object_image_load_region_set(), evas_object_image_load_scale_down_get(), evas_object_image_load_scale_down_set(), evas_object_image_load_size_get(), evas_object_image_load_size_set(), evas_object_image_memfile_set(), evas_object_image_native_surface_get(), evas_object_image_native_surface_set(), evas_object_image_pixels_dirty_get(), evas_object_image_pixels_dirty_set(), evas_object_image_pixels_get_callback_set(), evas_object_image_pixels_import(), evas_object_image_preload(), evas_object_image_region_support_get(), evas_object_image_reload(), evas_object_image_save(), evas_object_image_scale_hint_get(), evas_object_image_scale_hint_set(), evas_object_image_size_get(), evas_object_image_size_set(), evas_object_image_smooth_scale_get(), evas_object_image_smooth_scale_set(), evas_object_image_source_events_get(), evas_object_image_source_events_set(), evas_object_image_source_get(), evas_object_image_source_set(), evas_object_image_source_unset(), evas_object_image_source_visible_get(), evas_object_image_source_visible_set(), evas_object_image_stride_get(), evas_object_image_video_surface_get(), evas_object_image_video_surface_set(), evas_object_key_grab(), evas_object_key_ungrab(), evas_object_layer_get(), evas_object_layer_set(), evas_object_line_xy_get(), evas_object_line_xy_set(), evas_object_lower(), evas_object_map_enable_get(), evas_object_map_enable_set(), evas_object_map_get(), evas_object_map_set(), evas_object_move(), evas_object_name_child_find(), evas_object_name_find(), evas_object_name_get(), evas_object_name_set(), evas_object_pass_events_get(), evas_object_pass_events_set(), evas_object_pointer_mode_get(), evas_object_pointer_mode_set(), evas_object_polygon_point_add(), evas_object_polygon_points_clear(), evas_object_precise_is_inside_get(), evas_object_precise_is_inside_set(), evas_object_propagate_events_get(), evas_object_propagate_events_set(), evas_object_raise(), evas_object_render_op_get(), evas_object_render_op_set(), evas_object_repeat_events_get(), evas_object_repeat_events_set(), evas_object_resize(), evas_object_scale_get(), evas_object_scale_set(), evas_object_show(), evas_object_size_hint_align_get(), evas_object_size_hint_align_set(), evas_object_size_hint_aspect_get(), evas_object_size_hint_aspect_set(), evas_object_size_hint_max_get(), evas_object_size_hint_max_set(), evas_object_size_hint_min_get(), evas_object_size_hint_min_set(), evas_object_size_hint_padding_get(), evas_object_size_hint_padding_set(), evas_object_size_hint_request_get(), evas_object_size_hint_request_set(), evas_object_size_hint_weight_get(), evas_object_size_hint_weight_set(), evas_object_smart_add(), evas_object_smart_calculate(), evas_object_smart_callback_call(), evas_object_smart_callback_description_find(), evas_object_smart_callbacks_descriptions_get(), evas_object_smart_callbacks_descriptions_set(), evas_object_smart_changed(), evas_object_smart_clipped_clipper_get(), evas_object_smart_data_get(), evas_object_smart_data_set(), evas_object_smart_member_add(), evas_object_smart_member_del(), evas_object_smart_members_get(), evas_object_smart_move_children_relative(), evas_object_smart_need_recalculate_get(), evas_object_smart_need_recalculate_set(), evas_object_smart_parent_get(), evas_object_smart_smart_get(), evas_object_smart_type_check(), evas_object_smart_type_check_ptr(), evas_object_stack_above(), evas_object_stack_below(), evas_object_static_clip_get(), evas_object_static_clip_set(), evas_object_table_accessor_new(), evas_object_table_add_to(), evas_object_table_align_get(), evas_object_table_align_set(), evas_object_table_children_get(), evas_object_table_clear(), evas_object_table_col_row_size_get(), evas_object_table_homogeneous_get(), evas_object_table_homogeneous_set(), evas_object_table_iterator_new(), evas_object_table_mirrored_get(), evas_object_table_mirrored_set(), evas_object_table_pack(), evas_object_table_pack_get(), evas_object_table_padding_get(), evas_object_table_padding_set(), evas_object_table_unpack(), evas_object_text_bidi_delimiters_get(), evas_object_text_bidi_delimiters_set(), evas_object_text_char_pos_get(), evas_object_text_direction_get(), evas_object_text_ellipsis_get(), evas_object_text_ellipsis_set(), evas_object_text_font_get(), evas_object_text_font_set(), evas_object_text_font_source_get(), evas_object_text_font_source_set(), evas_object_text_glow2_color_get(), evas_object_text_glow2_color_set(), evas_object_text_glow_color_get(), evas_object_text_glow_color_set(), evas_object_text_last_up_to_pos(), evas_object_text_outline_color_get(), evas_object_text_outline_color_set(), evas_object_text_shadow_color_get(), evas_object_text_shadow_color_set(), evas_object_text_style_get(), evas_object_text_style_pad_get(), evas_object_text_style_set(), evas_object_text_text_get(), evas_object_text_text_set(), evas_object_textblock_bidi_delimiters_get(), evas_object_textblock_bidi_delimiters_set(), evas_object_textblock_cursor_get(), evas_object_textblock_cursor_new(), evas_object_textblock_legacy_newline_get(), evas_object_textblock_legacy_newline_set(), evas_object_textblock_line_number_geometry_get(), evas_object_textblock_replace_char_get(), evas_object_textblock_replace_char_set(), evas_object_textblock_size_formatted_get(), evas_object_textblock_size_native_get(), evas_object_textblock_style_get(), evas_object_textblock_style_set(), evas_object_textblock_style_user_peek(), evas_object_textblock_style_user_pop(), evas_object_textblock_style_user_push(), evas_object_textblock_text_markup_get(), evas_object_textblock_text_markup_set(), evas_object_textblock_valign_get(), evas_object_textblock_valign_set(), evas_object_textgrid_cell_size_get(), evas_object_textgrid_cellrow_get(), evas_object_textgrid_cellrow_set(), evas_object_textgrid_font_get(), evas_object_textgrid_font_set(), evas_object_textgrid_font_source_get(), evas_object_textgrid_font_source_set(), evas_object_textgrid_palette_get(), evas_object_textgrid_palette_set(), evas_object_textgrid_size_get(), evas_object_textgrid_size_set(), evas_object_textgrid_update_add(), evas_object_top_at_pointer_get(), evas_object_top_at_xy_get(), evas_object_top_get(), evas_object_top_in_rectangle_get(), evas_object_type_get(), evas_object_visible_get(), evas_objects_at_xy_get(), evas_objects_in_rectangle_get(), evas_obscured_clear(), evas_obscured_rectangle_add(), evas_output_framespace_get(), evas_output_framespace_set(), evas_output_method_get(), evas_output_method_set(), evas_output_size_get(), evas_output_size_set(), evas_output_viewport_get(), evas_output_viewport_set(), evas_pointer_button_down_mask_get(), evas_pointer_canvas_xy_get(), evas_pointer_inside_get(), evas_pointer_output_xy_get(), evas_render(), evas_render_async(), evas_render_dump(), evas_render_idle_flush(), evas_render_updates(), evas_smart_objects_calculate(), evas_smart_objects_calculate_count_get(), evas_textblock_node_format_first_get(), evas_textblock_node_format_last_get(), evas_textblock_node_format_list_get(), evas_textblock_node_format_remove_pair(), evas_touch_point_list_count(), evas_touch_point_list_nth_id_get(), evas_touch_point_list_nth_state_get(), and evas_touch_point_list_nth_xy_get().

#define eo_class_do (   klass,
  ... 
)    eo_class_do_internal(klass, __VA_ARGS__, EO_NOOP)

A convenience wrapper around eo_class_do_internal()

See Also
eo_class_do_internal
#define eo_do_super (   obj,
  ... 
)    eo_do_super_internal(obj, EO_OP_TYPE_REGULAR, __VA_ARGS__)

Calls the super function for the specific op.

Parameters
objThe object to work on
...list of parameters.
Returns
EINA_TRUE on success.

Unlike eo_do(), this function only accepts one op.

See Also
eo_do
#define eo_class_do_super (   klass,
  ... 
)    eo_class_do_super_internal(klass, __VA_ARGS__)

Calls the super function for the specific op.

Parameters
klassThe klass to work on
...list of parameters.
Returns
EINA_TRUE on success.

Unlike eo_class_do(), this function only accepts one op.

See Also
eo_class_do
#define eo_error_set (   obj)    eo_error_set_internal(obj, __FILE__, __LINE__)

Notify eo that there was an error when constructing, destructing or calling a function of the object.

Parameters
objthe object to work on.
See Also
eo_error_get()
#define eo_add (   klass,
  parent,
  ... 
)
Value:
({ \
const Eo_Class *_tmp_klass = klass; \
eo_add_internal(_tmp_klass, parent, eo_constructor(), ## __VA_ARGS__, EO_NOOP); \
})

Create a new object with the default constructor.

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.
See Also
eo_add_custom

Referenced by ecore_init(), evas_new(), evas_object_box_add(), evas_object_grid_add(), evas_object_image_add(), evas_object_line_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_custom (   klass,
  parent,
  ... 
)
Value:
({ \
const Eo_Class *_tmp_klass = klass; \
eo_add_internal(_tmp_klass, parent, ## __VA_ARGS__, EO_NOOP); \
})

Create a new object with a custom constructor.

Parameters
klassthe class of the object to create.
parentthe parent to set to the object.
...The ops to run. With the constructor being first.
Returns
An handle to the new object on success, NULL otherwise.
See Also
eo_add

Referenced by ecore_animator_add(), ecore_animator_timeline_add(), ecore_idle_enterer_add(), ecore_idle_enterer_before_add(), ecore_idle_exiter_add(), ecore_idler_add(), ecore_job_add(), ecore_poller_add(), and ecore_timer_add().

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

Convenience macro around eo_xref_internal()

See Also
eo_xref()

Referenced by eo_parent_set().

Typedef Documentation

eo_op_func_type

The type of the Op functions.

This is the type of the functions used by Eo.

See Also
eo_op_func_type_class
eo_op_func_type_class

The type of the class Op functions.

This is the same as eo_op_func_type,\ exepct that it's for usage with class functions, and not with object functions.

See Also
eo_op_func_type

Function Documentation

Eina_Bool eo_init ( void  )

Init the eo subsystem.

Returns
EINA_TRUE on success.
See Also
eo_shutfown()

References EINA_FALSE, eina_init(), eina_log_domain_register(), EINA_LOG_ERR, eina_magic_string_static_set(), and EINA_TRUE.

Referenced by ecore_init(), and evas_init().

Eina_Bool eo_shutdown ( void  )

Shutdown the eo subsystem.

Returns
EINA_TRUE on success.
See Also
eo_init()

References eina_log_domain_unregister(), eina_shutdown(), and EINA_TRUE.

Referenced by ecore_init(), ecore_shutdown(), and evas_shutdown().

Eina_Bool eo_do_internal ( Eo obj,
Eo_Op_Type  op_type,
  ... 
)

Calls op functions of an object.

Parameters
objThe object to work on
op_typeThe type of the ops that are passed.
...NULL terminated list of OPs and parameters.
Returns
EINA_TRUE on success.

Use the helper macros, don't pass the parameters manually. Use eo_do instead of this function.

See Also
eo_do

References EINA_FALSE, and EINA_TRUE.

Eina_Bool eo_class_do_internal ( const Eo_Class klass,
  ... 
)

Calls op functions of a class.

Parameters
klassThe class to work on
...NULL terminated list of OPs and parameters.
Returns
EINA_TRUE on success.

Use the helper macros, don't pass the parameters manually. Use eo_do instead of this function.

See Also
eo_class_do

References EINA_FALSE, EINA_TRUE, and EO_NOOP.

Eina_Bool eo_do_super_internal ( Eo obj,
Eo_Op_Type  op_type,
Eo_Op  op,
  ... 
)

Calls the super function for the specific op.

Parameters
objThe object to work on
op_typeThe type of the ops that are passed.
opThe wanted op.
...list of parameters.
Returns
EINA_TRUE on success.

Don't use this function, use the wrapping macros instead.

See Also
eo_do
eo_do_super

References EINA_FALSE, and EINA_TRUE.

Eina_Bool eo_class_do_super_internal ( const Eo_Class klass,
Eo_Op  op,
  ... 
)

Calls the super function for the specific op.

Parameters
klassThe klass to work on
opThe wanted op.
...list of parameters.
Returns
EINA_TRUE on success.

Don't use this function, use the wrapping macros instead.

See Also
eo_class_do
eo_class_do_super

References EINA_FALSE, and EINA_TRUE.

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

References EINA_FALSE.

Eo* eo_add_internal ( const Eo_Class klass,
Eo parent,
  ... 
)

Create a new object.

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

Use the helper macros, don't pass the parameters manually. Use eo_add or eo_add_custom instead of this function.

See Also
eo_add

References EINA_MAGIC_SET, EINA_UNLIKELY, EO_CLASS_TYPE_REGULAR, and eo_parent_set().

Eo* eo_parent_get ( const Eo obj)

Get the parent of an object.

Parameters
objthe object to get the parent of.
Returns
a pointer to the parent object.
See Also
eo_parent_set()
Eina_Bool eo_parent_set ( Eo obj,
const Eo parent 
)

Set the parent of an object.

Parameters
objthe object to get the parent of.
parentthe new parent.
Returns
EINA_TRUE on success, EINA_FALSE on failure.

Parents keep references to their children so in order to delete objects that have parents you need to set parent to NULL or use eo_del() that does that for you (and also unrefs the object).

See Also
eo_del()
eo_parent_get()

References EINA_FALSE, eina_inlist_append(), EINA_INLIST_GET, eina_inlist_remove(), EINA_TRUE, eo_composite_detach(), eo_composite_is(), eo_xref, and eo_xunref().

Referenced by ecore_job_del(), ecore_poller_del(), eo_add_internal(), eo_composite_attach(), eo_composite_detach(), eo_del(), and evas_object_del().

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.

Referenced by ecore_animator_del(), ecore_job_del(), ecore_poller_del(), evas_device_list(), evas_device_new(), 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_gl_new(), 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_intercept_hide_callback_add(), evas_object_intercept_hide_callback_del(), evas_object_intercept_move_callback_add(), evas_object_intercept_move_callback_del(), evas_object_intercept_show_callback_add(), evas_object_intercept_show_callback_del(), evas_object_ref(), evas_object_ref_get(), evas_object_size_hint_display_mode_get(), evas_object_size_hint_display_mode_set(), 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_del(), 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_textblock_cursor_char_coord_set(), evas_textblock_cursor_char_delete(), evas_textblock_cursor_char_geometry_get(), evas_textblock_cursor_format_append(), evas_textblock_cursor_free(), evas_textblock_cursor_geometry_get(), 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_first(), evas_textblock_cursor_paragraph_last(), 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_geometry_get(), evas_textblock_cursor_text_append(), evas_textblock_cursor_visible_range_get(), and evas_textblock_style_set().

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

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

Referenced by eo_manual_free().

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_parent_set(), and eo_unref().

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

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

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, and eina_inlist_remove().

Referenced by eo_parent_set().

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

void 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.
See Also
eo_manual_free_set()

References EINA_FALSE, and eo_ref_get().

Referenced by ecore_poller_del().

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