Generic Value Storage

Abstracts generic data storage and access to it in an extensible and efficient way. More...

Data Structures

union  _Eina_Value_Union
 All possible value types. More...

Modules

 Generic Value management
 Generic Value Array management
 Generic Value List management
 Generic Value Hash management
 Generic Value Blob management
 Generic Value Struct management
 Generic Value Type management

Typedefs

typedef struct _Eina_Value Eina_Value
 Store generic values.
typedef struct _Eina_Value_Type Eina_Value_Type
 Describes the data contained by the value.
typedef union _Eina_Value_Union Eina_Value_Union
 Union of all known value types.

Variables

const Eina_Value_TypeEINA_VALUE_TYPE_UCHAR
 manages unsigned char type.
const Eina_Value_TypeEINA_VALUE_TYPE_USHORT
 manages unsigned short type.
const Eina_Value_TypeEINA_VALUE_TYPE_UINT
 manages unsigned int type.
const Eina_Value_TypeEINA_VALUE_TYPE_ULONG
 manages unsigned long type.
const Eina_Value_TypeEINA_VALUE_TYPE_TIMESTAMP
 manages unsigned long type used for timestamps.
const Eina_Value_TypeEINA_VALUE_TYPE_UINT64
 manages unsigned integer of 64 bits type.
const Eina_Value_TypeEINA_VALUE_TYPE_CHAR
 manages char type.
const Eina_Value_TypeEINA_VALUE_TYPE_SHORT
 manages short type.
const Eina_Value_TypeEINA_VALUE_TYPE_INT
 manages int type.
const Eina_Value_TypeEINA_VALUE_TYPE_LONG
 manages long type.
const Eina_Value_TypeEINA_VALUE_TYPE_INT64
 manages integer of 64 bits type.
const Eina_Value_TypeEINA_VALUE_TYPE_FLOAT
 manages float type.
const Eina_Value_TypeEINA_VALUE_TYPE_DOUBLE
 manages double type.
const Eina_Value_TypeEINA_VALUE_TYPE_STRINGSHARE
 manages stringshared string type.
const Eina_Value_TypeEINA_VALUE_TYPE_STRING
 manages string type.
const Eina_Value_TypeEINA_VALUE_TYPE_ARRAY
 manages array type.
const Eina_Value_TypeEINA_VALUE_TYPE_LIST
 manages list type.
const Eina_Value_TypeEINA_VALUE_TYPE_HASH
 manages hash type.
const Eina_Value_TypeEINA_VALUE_TYPE_TIMEVAL
 manages 'struct timeval' type
const Eina_Value_TypeEINA_VALUE_TYPE_BLOB
 manages blob of bytes type, see Eina_Value_Blob
const Eina_Value_TypeEINA_VALUE_TYPE_STRUCT
 manages struct type.
int EINA_ERROR_VALUE_FAILED
 Error identifier corresponding to value check failure.

Detailed Description

Abstracts generic data storage and access to it in an extensible and efficient way.

It comes with pre-defined types for numbers, array, list, hash, blob and structs. It is able to convert between data types, including to string.

It is meant for simple data types, providing uniform access and release functions, useful to exchange data preserving their types. For more complex hierarchical data, with properties and children, reference counting, inheritance and interfaces,

Examples of usage of the Eina_Value API:


Typedef Documentation

Store generic values.

Since:
1.2

Describes the data contained by the value.

Since:
1.2

Union of all known value types.

This is only used to specify the minimum payload memory for Eina_Value.


Variable Documentation

manages unsigned char type.

Since:
1.2
Examples:
eina_value_03.c.

manages unsigned short type.

Since:
1.2
Examples:
eina_value_03.c.

manages unsigned int type.

Since:
1.2
Examples:
eina_value_03.c.

manages unsigned long type.

Since:
1.2
Examples:
eina_value_03.c.

manages unsigned long type used for timestamps.

Note:
this is identical in function to EINA_VALUE_TYPE_ULONG
Since:
1.2
Examples:
eina_value_03.c.

manages unsigned integer of 64 bits type.

Since:
1.2
Examples:
eina_value_03.c.

manages char type.

Since:
1.2
Examples:
eina_value_02.c, and eina_value_03.c.

manages short type.

Since:
1.2
Examples:
eina_value_03.c.

manages int type.

Since:
1.2
Examples:
eina_value_01.c, eina_value_02.c, and eina_value_03.c.

manages long type.

Since:
1.2
Examples:
eina_value_03.c.

manages integer of 64 bits type.

Since:
1.2
Examples:
eina_value_03.c.

manages float type.

Since:
1.2
Examples:
eina_value_03.c.

manages double type.

Since:
1.2
Examples:
eina_value_03.c.

manages stringshared string type.

Since:
1.2
Examples:
eina_value_03.c.

manages string type.

Since:
1.2
Examples:
eina_value_01.c, and eina_value_03.c.

manages array type.

Use the value get/set for arrays:

eina_value_set() takes an Eina_Value_Array where just subtype and step are used. If there is an array, it will be copied (including each item) and its contents must be properly configurable as subtype expects. eina_value_pset() takes a pointer to an Eina_Value_Array. For your convenience, use eina_value_array_setup().

eina_value_get() and eina_value_pget() takes a pointer to Eina_Value_Array, it's an exact copy of the current structure in use by value, no copies are done.

Since:
1.2

manages list type.

Use the value get/set for lists:

eina_value_set() takes an Eina_Value_List where just subtype is used. If there is an list, it will be copied (including each item) and its contents must be properly configurable as subtype expects. eina_value_pset() takes a pointer to an Eina_Value_List. For your convenience, use eina_value_list_setup().

eina_value_get() and eina_value_pget() takes a pointer to Eina_Value_List, it's an exact copy of the current structure in use by value, no copies are done.

Since:
1.2

manages hash type.

Use the value get/set for hashes:

eina_value_set() takes an Eina_Value_Hash where just subtype and buckets_power_size are used. If there is an hash, it will be copied (including each item) and its contents must be properly configurable as subtype expects. eina_value_pset() takes a pointer to an Eina_Value_Hash. For your convenience, use eina_value_hash_setup().

eina_value_get() and eina_value_pget() takes a pointer to Eina_Value_Hash, it's an exact copy of the current structure in use by value, no copies are done.

Note:
be aware that hash data is always an allocated memory of size defined by subtype->value_size. If your subtype is an integer, add as data malloc(sizeof(int)). If your subtype is an string, add as data malloc(sizeof(char*)) and this data value must point to strdup(string)!
Since:
1.2

manages 'struct timeval' type

eina_value_set() takes a "struct timeval" from sys/time.h. eina_value_pset() takes a pointer to "struct timeval".

eina_value_get() and eina_value_pget() takes a pointer to "struct timeval" and it's an exact copy of value.

Since:
1.2
Examples:
eina_value_03.c.

manages blob of bytes type, see Eina_Value_Blob

eina_value_set() takes an Eina_Value_Blob eina_value_pset() takes a pointer to Eina_Value_Blob.

eina_value_get() and eina_value_pget() takes a pointer to Eina_Value_Blob and it's an exact copy of value, no allocations are made.

Memory is untouched unless you provide ops (operations) pointer.

Since:
1.2

manages struct type.

Use the value get/set for structs:

eina_value_set() takes an Eina_Value_Struct where just desc is used. If there is an memory, it will be copied (including each member) and its contents must be properly configurable as desc expects. eina_value_pset() takes a pointer to an Eina_Value_Struct. For your convenience, use eina_value_struct_setup().

eina_value_get() and eina_value_pget() takes a pointer to Eina_Value_Struct, it's an exact copy of the current structure in use by value, no copies are done.

Since:
1.2
Examples:
eina_value_02.c.

Error identifier corresponding to value check failure.

Since:
1.2
Examples:
eina_value_03.c.