|
#define | EINA_VALUE_STRUCT_OPERATIONS_VERSION (1) |
| Current API version, used to validate _Eina_Value_Struct_Operations.
|
|
#define | EINA_VALUE_STRUCT_DESC_VERSION (1) |
| Current API version, used to validate _Eina_Value_Struct_Desc.
|
|
#define | EINA_VALUE_STRUCT_MEMBER(eina_value_type, type, member) {#member, eina_value_type, offsetof(type, member)} |
| Helper to define Eina_Value_Struct_Member fields, uses offsetof() with type and member. More...
|
|
#define | EINA_VALUE_STRUCT_MEMBER_SENTINEL {NULL, NULL, 0} |
| Helper to define Eina_Value_Struct_Member fields for sentinel (last item), useful if you did not define member_count . More...
|
|
#define | EINA_VALUE_STRUCT_DESC_DEFINE(Name, Ops, Size, ...) |
|
|
Eina_Value * | eina_value_struct_new (const Eina_Value_Struct_Desc *desc) |
| Creates generic value storage of type struct. More...
|
|
static Eina_Bool | eina_value_struct_setup (Eina_Value *value, const Eina_Value_Struct_Desc *desc) |
| Initializes generic value storage of type struct. More...
|
|
static const Eina_Value_Struct_Desc * | eina_value_struct_desc_get (const Eina_Value *value) |
| Checks for a struct and get its description. More...
|
|
static Eina_Bool | eina_value_struct_set (Eina_Value *value, const char *name,...) |
| Sets the generic value in a struct member. More...
|
|
static Eina_Bool | eina_value_struct_get (const Eina_Value *value, const char *name,...) |
| Gets the generic value from a struct member. More...
|
|
static Eina_Bool | eina_value_struct_vset (Eina_Value *value, const char *name, va_list args) |
| Sets the generic value in a struct member. More...
|
|
static Eina_Bool | eina_value_struct_vget (const Eina_Value *value, const char *name, va_list args) |
| Gets the generic value from a struct member. More...
|
|
static Eina_Bool | eina_value_struct_pset (Eina_Value *value, const char *name, const void *ptr) |
| Sets the generic value in a struct member from pointer. More...
|
|
static Eina_Bool | eina_value_struct_pget (const Eina_Value *value, const char *name, void *ptr) |
| Gets the generic value to pointer from a struct member. More...
|
|
static Eina_Bool | eina_value_struct_value_get (const Eina_Value *src, const char *name, Eina_Value *dst) |
| Gets the member as Eina_Value copy. More...
|
|
static Eina_Bool | eina_value_struct_value_set (Eina_Value *dst, const char *name, const Eina_Value *src) |
| Sets the member from Eina_Value source. More...
|
|
static Eina_Bool | eina_value_struct_member_value_get (const Eina_Value *src, const Eina_Value_Struct_Member *member, Eina_Value *dst) |
| Gets the member as Eina_Value copy given its member description. More...
|
|
static Eina_Bool | eina_value_struct_member_value_set (Eina_Value *dst, const Eina_Value_Struct_Member *member, const Eina_Value *src) |
| Sets the member from Eina_Value source. More...
|
|
◆ EINA_VALUE_STRUCT_MEMBER
#define EINA_VALUE_STRUCT_MEMBER |
( |
|
eina_value_type, |
|
|
|
type, |
|
|
|
member |
|
) |
| {#member, eina_value_type, offsetof(type, member)} |
◆ EINA_VALUE_STRUCT_MEMBER_SENTINEL
#define EINA_VALUE_STRUCT_MEMBER_SENTINEL {NULL, NULL, 0} |
Helper to define Eina_Value_Struct_Member fields for sentinel (last item), useful if you did not define member_count
.
- Since
- 1.2
◆ EINA_VALUE_STRUCT_DESC_DEFINE
#define EINA_VALUE_STRUCT_DESC_DEFINE |
( |
|
Name, |
|
|
|
Ops, |
|
|
|
Size, |
|
|
|
... |
|
) |
| |
Value:
Name(void) \
{ \
Eina_Value_Struct_Member tmp[] = { __VA_ARGS__ }; \
EINA_VALUE_STRUCT_DESC_VERSION, \
NULL, \
members, \
EINA_C_ARRAY_LENGTH(tmp), \
Size \
}; \
\
if (members[0].name) \
{ \
r.ops = Ops; \
memcpy(members, tmp, sizeof(tmp)); \
} \
return &r; \
}
◆ Eina_Value_Struct_Operations
How to manage struct.
Any NULL
callback is ignored.
A structure can specify alternative methods to allocate, free and copy itself. See structure definition for all methods.
- See also
- _Eina_Value_Struct_Operations explains fields.
- Since
- 1.2
◆ Eina_Value_Struct_Member
Describes a single member of struct.
The member holds a name, type and its byte offset within the struct memory. Most Eina_Value_Struct functions takes the member name as parameter, as in eina_value_struct_set().
- See also
- _Eina_Value_Struct_Member explains fields.
- Since
- 1.2
◆ Eina_Value_Struct_Desc
Describes the struct by listing its size, members and operations.
- See also
- _Eina_Value_Struct_Desc explains fields.
- Since
- 1.2
◆ eina_value_struct_new()
◆ eina_value_struct_setup()
◆ eina_value_struct_desc_get()
Checks for a struct and get its description.
- Parameters
-
- Returns
- structure description, with all members and size. on failure,
NULL
is returned.
- Since
- 1.21
◆ eina_value_struct_set()
Sets the generic value in a struct member.
- Parameters
-
[in,out] | value | Source value object |
[in] | name | Name to find the member |
[in] | ... | Variable arguments |
- Returns
- EINA_TRUE on success, EINA_FALSE otherwise.
The variable argument is dependent on chosen member type. The list for basic types:
- EINA_VALUE_TYPE_VALUE: Eina_Value
- EINA_VALUE_TYPE_ERROR: Eina_Error
- 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*
- EINA_VALUE_TYPE_TM: struct tm*
struct myst {
int i;
char c;
};
{NULL, NULL, 0}
};
NULL, myst_members, 2, sizeof(struct myst)
};
int x;
char y;
- See also
- eina_value_struct_get()
-
eina_value_struct_vset()
-
eina_value_struct_pset()
- Since
- 1.2
- Examples
- complex-types-client-eina-value.c, and eina_value_02.c.
◆ eina_value_struct_get()
Gets the generic value from a struct member.
- Parameters
-
[in] | value | Source value object |
[in] | name | Name to find the member |
[out] | ... | Variable arguments |
- 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 member type. The list for basic types:
- EINA_VALUE_TYPE_VALUE: Eina_Value*
- EINA_VALUE_TYPE_ERROR: Eina_Error*
- 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*
- EINA_VALUE_TYPE_TM: struct tm*
struct myst {
int i;
char c;
};
{NULL, NULL, 0}
};
NULL, myst_members, 2, sizeof(struct myst)
};
int x;
char y;
- See also
- eina_value_struct_set()
-
eina_value_struct_vset()
-
eina_value_struct_pset()
- Since
- 1.2
- Examples
- complex-types-client-eina-value.c, and eina_value_02.c.
◆ eina_value_struct_vset()
static Eina_Bool eina_value_struct_vset |
( |
Eina_Value * |
value, |
|
|
const char * |
name, |
|
|
va_list |
args |
|
) |
| |
|
inlinestatic |
◆ eina_value_struct_vget()
static Eina_Bool eina_value_struct_vget |
( |
const Eina_Value * |
value, |
|
|
const char * |
name, |
|
|
va_list |
args |
|
) |
| |
|
inlinestatic |
Gets the generic value from a struct member.
- Parameters
-
[in] | value | Source value object |
[in] | name | Name to find the member |
[in,out] | args | Variable 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_struct_vset()
-
eina_value_struct_get()
-
eina_value_struct_pget()
- Since
- 1.2
◆ eina_value_struct_pset()
static Eina_Bool eina_value_struct_pset |
( |
Eina_Value * |
value, |
|
|
const char * |
name, |
|
|
const void * |
ptr |
|
) |
| |
|
inlinestatic |
Sets the generic value in a struct member from pointer.
- Parameters
-
[in,out] | value | Source value object |
[in] | name | Name to find the member |
[in] | ptr | Pointer 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_VALUE: Eina_Value*
- EINA_VALUE_TYPE_ERROR: Eina_Error*
- 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*
- EINA_VALUE_TYPE_TM: struct tm*
- Note
- the pointer contents are written using the size defined by type. It can be larger than void* or uint64_t.
struct myst {
int i;
char c;
};
{NULL, NULL, 0}
};
NULL, myst_members, 2, sizeof(struct myst)
};
int x = 5678;
char y = 0xf;
- See also
- eina_value_struct_set()
-
eina_value_struct_get()
-
eina_value_struct_vset()
- Since
- 1.2
◆ eina_value_struct_pget()
static Eina_Bool eina_value_struct_pget |
( |
const Eina_Value * |
value, |
|
|
const char * |
name, |
|
|
void * |
ptr |
|
) |
| |
|
inlinestatic |
Gets the generic value to pointer from a struct member.
- Parameters
-
[in] | value | Source value object |
[in] | name | Name to find the member |
[out] | ptr | Pointer 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_VALUE: Eina_Value*
- EINA_VALUE_TYPE_ERROR: Eina_Error*
- 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*
- EINA_VALUE_TYPE_TM: struct tm*
struct myst {
int i;
char c;
};
{NULL, NULL, 0}
};
NULL, myst_members, 2, sizeof(struct myst)
};
int x = 5678;
char y = 0xf;
- See also
- eina_value_struct_set()
-
eina_value_struct_vset()
-
eina_value_struct_pset()
- Since
- 1.2
◆ eina_value_struct_value_get()
Gets the member as Eina_Value copy.
- Parameters
-
[in] | src | Source value object |
[in] | name | Name to find the member |
[out] | dst | Where to return the member value. |
- Returns
- EINA_TRUE on success, EINA_FALSE otherwise.
The argument dst is considered uninitialized and it's setup to the type of the member.
- Since
- 1.2
- Examples
- complex-types-client-eina-value.c.
◆ eina_value_struct_value_set()
◆ eina_value_struct_member_value_get()
Gets the member as Eina_Value copy given its member description.
- Parameters
-
[in] | src | Source value object |
[in] | member | The member description to use |
[out] | dst | Where to return the member value. |
- Returns
- EINA_TRUE on success, EINA_FALSE otherwise.
The argument dst is considered uninitialized and it's setup to the type of the member.
- Since
- 1.2
◆ eina_value_struct_member_value_set()
Sets the member from Eina_Value source.
- Parameters
-
[out] | dst | destination value object |
[in] | member | the member description to use |
[in] | src | source value |
- Returns
- EINA_TRUE on success, EINA_FALSE on failure.
- Since
- 1.2
◆ EINA_VALUE_STRUCT_OPERATIONS_BINSEARCH [1/2]
Assumes members
is sorted by name and applies binary search for names.
Ideally the member_count
field is set to speed it up.
No other methods are set (alloc, free, copy, compare), then it uses the default operations.
◆ EINA_VALUE_STRUCT_OPERATIONS_STRINGSHARE [1/2]
Assumes members
name are stringshared and can be compared for equality without using its contents (simple pointer comparison).
Ideally the search name
will be stringshared as well, but it will do a second loop with a forced stringshare if it did not find the member.
No other methods are set (alloc, free, copy, compare), then it uses the default operations.
◆ EINA_VALUE_STRUCT_OPERATIONS_BINSEARCH [2/2]
EINA_VALUE_STRUCT_OPERATIONS_BINSEARCH = NULL |
Assumes members
is sorted by name and applies binary search for names.
Ideally the member_count
field is set to speed it up.
No other methods are set (alloc, free, copy, compare), then it uses the default operations.
◆ EINA_VALUE_STRUCT_OPERATIONS_STRINGSHARE [2/2]
EINA_VALUE_STRUCT_OPERATIONS_STRINGSHARE = NULL |
Assumes members
name are stringshared and can be compared for equality without using its contents (simple pointer comparison).
Ideally the search name
will be stringshared as well, but it will do a second loop with a forced stringshare if it did not find the member.
No other methods are set (alloc, free, copy, compare), then it uses the default operations.
#define EINA_VALUE_STRUCT_DESC_VERSION
Current API version, used to validate _Eina_Value_Struct_Desc.
Definition: eina_value.h:3131
const Eina_Value_Type * EINA_VALUE_TYPE_INT
manages int type.
Definition: eina_value.c:5602
static Eina_Bool eina_value_struct_get(const Eina_Value *value, const char *name,...)
Gets the generic value from a struct member.
static Eina_Bool eina_value_struct_pset(Eina_Value *value, const char *name, const void *ptr)
Sets the generic value in a struct member from pointer.
#define EINA_C_ARRAY_LENGTH(arr)
Macro to return the array length of a standard c array.
Definition: eina_types.h:621
static Eina_Bool eina_value_struct_set(Eina_Value *value, const char *name,...)
Sets the generic value in a struct member.
Eina_Value * eina_value_struct_new(const Eina_Value_Struct_Desc *desc)
Creates generic value storage of type struct.
Definition: eina_value.c:5823
static Eina_Bool eina_value_struct_pget(const Eina_Value *value, const char *name, void *ptr)
Gets the generic value to pointer from a struct member.
void eina_value_free(Eina_Value *value)
Frees value and its data.
Definition: eina_value.c:5645
const Eina_Value_Type * EINA_VALUE_TYPE_CHAR
manages char type.
Definition: eina_value.c:5600
defines the contents of a value
Definition: eina_value.h:662
Describes the struct by listing its size, members and operations.
Definition: eina_value.h:3144
Describes a single member of struct.
Definition: eina_value.h:3121