Extra Object Manipulation

- Main Page
- Related Pages
- Modules
- Namespaces
- Data Structures
- Files
- Examples

Extra Object Manipulation
Evas » Generic Object Functions

Miscellaneous functions that also apply to any object, but are less used or not implemented by all objects. More...

void | evas_object_data_set (Evas_Object *obj, const char *key, const void *data)
| Set an attached data pointer to an object with a given string key. More...
void * | evas_object_data_get (const Evas_Object *obj, const char *key)
| Return an attached data pointer on an Evas object by its given string key. More...
void * | evas_object_data_del (Evas_Object *obj, const char *key)
| Delete an attached data pointer from an object. More...

## Detailed Description

Miscellaneous functions that also apply to any object, but are less used or not implemented by all objects.

Examples on this group of functions can be found here and here.

## Function Documentation

void evas_object_data_set | ( | Evas_Object * | obj,
|  | const char * | key,
|  | const void * | data
| ) |  |

Set an attached data pointer to an object with a given string key.

Parameters

  obj | The object to attach the data pointer to
  key | The string key for the data to access it
  data | The pointer to the data to be attached

This attaches the pointer `data` to the object `obj`, given the access string `key`. This pointer will stay "hooked" to the object until a new pointer with the same string key is attached with evas_object_data_set() or it is deleted with evas_object_data_del(). On deletion of the object `obj`, the pointers will not be accessible from the object anymore.

You can find the pointer attached under a string key using evas_object_data_get(). It is the job of the calling application to free any data pointed to by `data` when it is no longer required.

If `data` is `NULL`, the old value stored at `key` will be removed but no new value will be stored. This is synonymous with calling evas_object_data_del() with `obj` and `key`.

Note
  This function is very handy when you have data associated specifically to an Evas object, being of use only when dealing with it. Than you don't have the burden to a pointer to it elsewhere, using this family of functions.

Example:

1 int *my_data;
2 extern Evas_Object *obj;
3
4 my_data = malloc(500);
5 evas_object_data_set(obj, "name_of_data", my_data);
6 printf("The data that was attached was %p\n", evas_object_data_get(obj, "name_of_data"));

Referenced by ecore_evas_ews_new(), ecore_evas_object_image_new(), edje_box_layout_register(), edje_evas_global_perspective_get(), edje_external_type_get(), edje_file_data_get(), and edje_perspective_new().

void* evas_object_data_get | ( | const Evas_Object * | obj,
|  | const char * | key
| ) |  |

Return an attached data pointer on an Evas object by its given string key.

Parameters

  obj | The object to which the data was attached
  key | The string key the data was stored under

Returns
  The data pointer stored, or `NULL` if none was stored

This function will return the data pointer attached to the object `obj`, stored using the string key `key`. If the object is valid and a data pointer was stored under the given key, that pointer will be returned. If this is not the case, `NULL` will be returned, signifying an invalid object or a non-existent key. It is possible that a `NULL` pointer was stored given that key, but this situation is non-sensical and thus can be considered an error as well. `NULL` pointers are never stored as this is the return value if an error occurs.

Example:

1 int *my_data;
2 extern Evas_Object *obj;
3
4 my_data = evas_object_data_get(obj, "name_of_my_data");
5 if (my_data) printf("Data stored was %p\n", my_data);
6 else printf("No data was stored on the object\n");

Examples:
  ecore_imf_example.c, ephysics_logo.c, evas-smart-interface.c, evas-smart-object.c, test_camera.c, test_camera_track.c, test_delete.c, and test_rotating_forever.c.

Referenced by ecore_evas_buffer_ecore_evas_parent_get(), ecore_evas_object_ecore_evas_get(), ecore_evas_object_evas_get(), edje_box_layout_register(), edje_evas_global_perspective_get(), edje_external_param_type_str(), edje_external_type_get(), edje_file_data_get(), edje_mmap_size_class_iterator_new(), edje_object_part_object_name_get(), and edje_object_signal_callback_extra_data_get().

void* evas_object_data_del | ( | Evas_Object * | obj,
|  | const char * | key
| ) |  |

Delete an attached data pointer from an object.

Parameters

  obj | The object to delete the data pointer from
  key | The string key the data was stored under

Returns
  The original data pointer stored at `key` on `obj`

This will remove the stored data pointer from `obj` stored under `key` and return this same pointer, if actually there was data there, or `NULL`, if nothing was stored under that key.

Example:

1 int *my_data;
2 extern Evas_Object *obj;
3
4 my_data = evas_object_data_del(obj, "name_of_my_data");

Referenced by edje_box_layout_register(), edje_edit_object_add(), and edje_evas_global_perspective_get().