Data Structures

struct  _Eina_Value_Hash
 Used to store the hash and its subtype. More...

Typedefs

typedef struct _Eina_Value_Hash Eina_Value_Hash
 Value type for EINA_VALUE_TYPE_HASH.

Functions

Eina_Valueeina_value_hash_new (const Eina_Value_Type *subtype, unsigned int buckets_power_size)
 Create generic value storage of type hash.
static Eina_Bool eina_value_hash_setup (Eina_Value *value, const Eina_Value_Type *subtype, unsigned int buckets_power_size)
 Initialize generic value storage of type hash.
static unsigned int eina_value_hash_population (const Eina_Value *value)
 Query number of elements in value of hash type.
static Eina_Bool eina_value_hash_del (Eina_Value *value, const char *key)
 Remove element at given position in value of hash type.
static Eina_Bool eina_value_hash_set (Eina_Value *value, const char *key,...)
 Set the generic value in an hash member.
static Eina_Bool eina_value_hash_get (const Eina_Value *value, const char *key,...)
 Get the generic value from an hash member.
static Eina_Bool eina_value_hash_vset (Eina_Value *value, const char *key, va_list args)
 Set the generic value in an hash member.
static Eina_Bool eina_value_hash_vget (const Eina_Value *value, const char *key, va_list args)
 Get the generic value from an hash member.
static Eina_Bool eina_value_hash_pset (Eina_Value *value, const char *key, const void *ptr)
 Set the generic value in an hash member from pointer.
static Eina_Bool eina_value_hash_pget (const Eina_Value *value, const char *key, void *ptr)
 Get the generic value to pointer from an hash member.

Detailed Description

Typedef Documentation

◆ Eina_Value_Hash

Value type for EINA_VALUE_TYPE_HASH.

See also
_Eina_Value_Hash explains fields.
Since
1.2

Function Documentation

◆ eina_value_hash_new()

Eina_Value * eina_value_hash_new ( const Eina_Value_Type * subtype,
unsigned int buckets_power_size )

Create generic value storage of type hash.

Parameters
subtypehow to manage this hash members.
buckets_power_sizehow to allocate hash buckets (2 ^ buckets_power_size), if zero then a sane value is chosen.
Returns
The new value or NULL on failure.

Create a new generic value storage of type hash. The members are managed using the description specified by subtype.

On failure, NULL is returned and EINA_ERROR_OUT_OF_MEMORY or EINA_ERROR_VALUE_FAILED is set.

Note
this creates from mempool and then uses eina_value_hash_setup().
See also
eina_value_free()
eina_value_hash_setup()
Since
1.2

References EINA_FALSE, eina_value_hash_setup(), and eina_value_type_check().

◆ eina_value_hash_setup()

Eina_Bool eina_value_hash_setup ( Eina_Value * value,
const Eina_Value_Type * subtype,
unsigned int buckets_power_size )
inlinestatic

Initialize generic value storage of type hash.

Parameters
valuevalue object
subtypehow to manage this hash members.
buckets_power_sizehow to allocate hash buckets (2 ^ buckets_power_size), if zero then a sane value is chosen.
Returns
EINA_TRUE on success, EINA_FALSE otherwise.

Initializes new generic value storage of type hash with the given subtype.

This is the same as calling eina_value_set() with EINA_VALUE_TYPE_HASH followed by eina_value_pset() with the Eina_Value_Hash description configured.

Note
Existing contents are ignored! If the value was previously used, then use eina_value_flush() first.

On failure, EINA_FALSE is returned and EINA_ERROR_OUT_OF_MEMORY or EINA_ERROR_VALUE_FAILED is set.

See also
eina_value_flush()
Since
1.2

Referenced by eina_value_hash_new().

◆ eina_value_hash_population()

unsigned int eina_value_hash_population ( const Eina_Value * value)
inlinestatic

Query number of elements in value of hash type.

Parameters
valuevalue object.
Returns
number of child elements.
Since
1.2

◆ eina_value_hash_del()

Eina_Bool eina_value_hash_del ( Eina_Value * value,
const char * key )
inlinestatic

Remove element at given position in value of hash type.

Parameters
valuevalue object.
keykey to find the member
Returns
EINA_TRUE on success, EINA_FALSE otherwise.
Since
1.2

◆ eina_value_hash_set()

Eina_Bool eina_value_hash_set ( Eina_Value * value,
const char * key,
... )
inlinestatic

Set the generic value in an hash member.

Parameters
valuesource value object
keykey to find the member
Returns
EINA_TRUE on success, EINA_FALSE otherwise.

The variable argument is dependent on chosen subtype. The list for basic types:

  • EINA_VALUE_TYPE_UCHAR: unsigned char
  • EINA_VALUE_TYPE_USHORT: unsigned short
  • EINA_VALUE_TYPE_UINT: unsigned int
  • EINA_VALUE_TYPE_ULONG: unsigned long
  • EINA_VALUE_TYPE_UINT64: uint64_t
  • EINA_VALUE_TYPE_CHAR: char
  • EINA_VALUE_TYPE_SHORT: short
  • EINA_VALUE_TYPE_INT: int
  • EINA_VALUE_TYPE_LONG: long
  • EINA_VALUE_TYPE_INT64: int64_t
  • EINA_VALUE_TYPE_FLOAT: float
  • EINA_VALUE_TYPE_DOUBLE: double
  • EINA_VALUE_TYPE_STRINGSHARE: const char *
  • EINA_VALUE_TYPE_STRING: const char *
  • EINA_VALUE_TYPE_HASH: Eina_Value_Hash
  • EINA_VALUE_TYPE_TIMEVAL: struct timeval*
  • EINA_VALUE_TYPE_BLOB: Eina_Value_Blob*
  • EINA_VALUE_TYPE_STRUCT: Eina_Value_Struct*
int x;
eina_value_hash_set(value, "abc", 5678);
eina_value_hash_get(value, "abc", &x);
struct _Eina_Value Eina_Value
Store generic values.
Definition eina_value.h:305
const Eina_Value_Type * EINA_VALUE_TYPE_INT
manages int type.
Definition eina_value.c:5087
static Eina_Bool eina_value_hash_get(const Eina_Value *value, const char *key,...)
Get the generic value from an hash member.
static Eina_Bool eina_value_hash_set(Eina_Value *value, const char *key,...)
Set the generic value in an hash member.
Eina_Value * eina_value_hash_new(const Eina_Value_Type *subtype, unsigned int buckets_power_size)
Create generic value storage of type hash.
Definition eina_value.c:5259
void eina_value_free(Eina_Value *value)
Free value and its data.
Definition eina_value.c:5136
See also
eina_value_hash_get()
eina_value_hash_vset()
eina_value_hash_pset()
eina_value_hash_del()
Since
1.2

◆ eina_value_hash_get()

Eina_Bool eina_value_hash_get ( const Eina_Value * value,
const char * key,
... )
inlinestatic

Get the generic value from an hash member.

Parameters
valuesource value object
keykey to find the member
Returns
EINA_TRUE on success, EINA_FALSE otherwise.

The value is returned in the variable argument parameter, the actual value is type-dependent, but usually it will be what is stored inside the object. There shouldn't be any memory allocation, thus the contents should not be freed.

The variable argument is dependent on chosen subtype. The list for basic types:

  • EINA_VALUE_TYPE_UCHAR: unsigned char*
  • EINA_VALUE_TYPE_USHORT: unsigned short*
  • EINA_VALUE_TYPE_UINT: unsigned int*
  • EINA_VALUE_TYPE_ULONG: unsigned long*
  • EINA_VALUE_TYPE_UINT64: uint64_t*
  • EINA_VALUE_TYPE_CHAR: char*
  • EINA_VALUE_TYPE_SHORT: short*
  • EINA_VALUE_TYPE_INT: int*
  • EINA_VALUE_TYPE_LONG: long*
  • EINA_VALUE_TYPE_INT64: int64_t*
  • EINA_VALUE_TYPE_FLOAT: float*
  • EINA_VALUE_TYPE_DOUBLE: double*
  • EINA_VALUE_TYPE_STRINGSHARE: const char **
  • EINA_VALUE_TYPE_STRING: const char **
  • EINA_VALUE_TYPE_HASH: Eina_Value_Hash*
  • EINA_VALUE_TYPE_TIMEVAL: struct timeval*
  • EINA_VALUE_TYPE_BLOB: Eina_Value_Blob*
  • EINA_VALUE_TYPE_STRUCT: Eina_Value_Struct*
int x;
eina_value_hash_set(value, "abc", 1234);
eina_value_hash_get(value, "abc", &x);
See also
eina_value_hash_set()
eina_value_hash_vset()
eina_value_hash_pset()
Since
1.2

References eina_value_hash_get().

Referenced by eina_value_hash_get().

◆ eina_value_hash_vset()

Eina_Bool eina_value_hash_vset ( Eina_Value * value,
const char * key,
va_list args )
inlinestatic

Set the generic value in an hash member.

Parameters
valuesource value object
keykey to find the member
argsvariable argument
Returns
EINA_TRUE on success, EINA_FALSE otherwise.
See also
eina_value_hash_set()
eina_value_hash_get()
eina_value_hash_pset()
Since
1.2

References eina_value_hash_vset().

Referenced by eina_value_hash_vset().

◆ eina_value_hash_vget()

Eina_Bool eina_value_hash_vget ( const Eina_Value * value,
const char * key,
va_list args )
inlinestatic

Get the generic value from an hash member.

Parameters
valuesource value object
keykey to find the member
argsvariable argument
Returns
EINA_TRUE on success, EINA_FALSE otherwise.

The value is returned in the variable argument parameter, the actual value is type-dependent, but usually it will be what is stored inside the object. There shouldn't be any memory allocation, thus the contents should not be freed.

See also
eina_value_hash_vset()
eina_value_hash_get()
eina_value_hash_pget()
Since
1.2

References eina_value_hash_vget().

Referenced by eina_value_hash_vget().

◆ eina_value_hash_pset()

Eina_Bool eina_value_hash_pset ( Eina_Value * value,
const char * key,
const void * ptr )
inlinestatic

Set the generic value in an hash member from pointer.

Parameters
valuesource value object
keykey to find the member
ptrpointer to specify the contents.
Returns
EINA_TRUE on success, EINA_FALSE otherwise.

The pointer type is dependent on chosen value type. The list for basic types:

  • EINA_VALUE_TYPE_UCHAR: unsigned char*
  • EINA_VALUE_TYPE_USHORT: unsigned short*
  • EINA_VALUE_TYPE_UINT: unsigned int*
  • EINA_VALUE_TYPE_ULONG: unsigned long*
  • EINA_VALUE_TYPE_UINT64: uint64_t*
  • EINA_VALUE_TYPE_CHAR: char*
  • EINA_VALUE_TYPE_SHORT: short*
  • EINA_VALUE_TYPE_INT: int*
  • EINA_VALUE_TYPE_LONG: long*
  • EINA_VALUE_TYPE_INT64: int64_t*
  • EINA_VALUE_TYPE_FLOAT: float*
  • EINA_VALUE_TYPE_DOUBLE: double*
  • EINA_VALUE_TYPE_STRINGSHARE: const char **
  • EINA_VALUE_TYPE_STRING: const char **
  • EINA_VALUE_TYPE_HASH: Eina_Value_Hash*
  • EINA_VALUE_TYPE_TIMEVAL: struct timeval*
  • EINA_VALUE_TYPE_BLOB: Eina_Value_Blob*
  • EINA_VALUE_TYPE_STRUCT: Eina_Value_Struct*
Note
the pointer contents are written using the size defined by type. It can be larger than void* or uint64_t.
int x = 1234;
eina_value_hash_pset(value, "abc", &x);
eina_value_hash_pget(value, "abc", &x);
static Eina_Bool eina_value_hash_pset(Eina_Value *value, const char *key, const void *ptr)
Set the generic value in an hash member from pointer.
static Eina_Bool eina_value_hash_pget(const Eina_Value *value, const char *key, void *ptr)
Get the generic value to pointer from an hash member.
See also
eina_value_hash_set()
eina_value_hash_get()
eina_value_hash_vset()
Since
1.2

References eina_value_hash_pset().

Referenced by eina_value_hash_pset().

◆ eina_value_hash_pget()

Eina_Bool eina_value_hash_pget ( const Eina_Value * value,
const char * key,
void * ptr )
inlinestatic

Get the generic value to pointer from an hash member.

Parameters
valuesource value object
keykey to find the member
ptrpointer to receive the contents.
Returns
EINA_TRUE on success, EINA_FALSE otherwise.

The value is returned in pointer contents, the actual value is type-dependent, but usually it will be what is stored inside the object. There shouldn't be any memory allocation, thus the contents should not be freed.

The pointer type is dependent on chosen value type. The list for basic types:

  • EINA_VALUE_TYPE_UCHAR: unsigned char*
  • EINA_VALUE_TYPE_USHORT: unsigned short*
  • EINA_VALUE_TYPE_UINT: unsigned int*
  • EINA_VALUE_TYPE_ULONG: unsigned long*
  • EINA_VALUE_TYPE_UINT64: uint64_t*
  • EINA_VALUE_TYPE_CHAR: char*
  • EINA_VALUE_TYPE_SHORT: short*
  • EINA_VALUE_TYPE_INT: int*
  • EINA_VALUE_TYPE_LONG: long*
  • EINA_VALUE_TYPE_INT64: int64_t*
  • EINA_VALUE_TYPE_FLOAT: float*
  • EINA_VALUE_TYPE_DOUBLE: double*
  • EINA_VALUE_TYPE_STRINGSHARE: const char **
  • EINA_VALUE_TYPE_STRING: const char **
  • EINA_VALUE_TYPE_HASH: Eina_Value_Hash*
  • EINA_VALUE_TYPE_TIMEVAL: struct timeval*
  • EINA_VALUE_TYPE_BLOB: Eina_Value_Blob*
  • EINA_VALUE_TYPE_STRUCT: Eina_Value_Struct*
int x;
eina_value_hash_set(value, "abc", 1234);
eina_value_hash_pget(value, "abc", &x);
See also
eina_value_hash_set()
eina_value_hash_vset()
eina_value_hash_pset()
Since
1.2

References eina_value_hash_pget().

Referenced by eina_value_hash_pget().