These functions provide some helper for a pseudo Copy On Write mechanism.
Eina_Cow will return const memory pointer to some default value that you will be able to change only by requesting a writable pointer. Later on a garbage collector can come online and try to merge back some of those pointer.
- Since (EFL) :
- 1.8.0
Functions |
Eina_Cow * | eina_cow_add (const char *name, unsigned int struct_size, unsigned int step, const void *default_value, Eina_Bool gc) |
| Instantiates a new Eina_Cow pool.
|
void | eina_cow_del (Eina_Cow *cow) |
| Destroys an Eina_Cow pool and all the allocated memory.
|
const Eina_Cow_Data * | eina_cow_alloc (Eina_Cow *cow) |
| Returns an initialized pointer from the pool.
|
void | eina_cow_free (Eina_Cow *cow, const Eina_Cow_Data **data) |
| Frees a pointer from the pool.
|
void * | eina_cow_write (Eina_Cow *cow, const Eina_Cow_Data *const *src) |
| Gets a writeable pointer from a const pointer.
|
void | eina_cow_done (Eina_Cow *cow, const Eina_Cow_Data *const *dst, const void *data, Eina_Bool needed_gc) |
| Sets back a pointer into read only.
|
void | eina_cow_memcpy (Eina_Cow *cow, const Eina_Cow_Data *const *dst, const Eina_Cow_Data *src) |
| Makes the destination contain the same thing as the source pointer.
|
Eina_Bool | eina_cow_gc (Eina_Cow *cow) |
| Tries to find entries that have the same content and update them.
|
Typedefs |
typedef struct _Eina_Cow | Eina_Cow |
typedef void | Eina_Cow_Data |
Defines |
#define | EINA_COW_WRITE_BEGIN(Cow, Read, Write_Type, Write) |
| Definition for the macro to setup a writeable pointer from a const one.
|
#define | EINA_COW_WRITE_END(Cow, Read, Write) |
| Definition for the macro to close the writeable pointer.
|
Define Documentation
Value:
Definition for the macro to setup a writeable pointer from a const one.
- Parameters:
-
Cow | The Eina_Cow where the const pointer come from. |
Read | The const pointer to get a writable handler from. |
Write_Type | The type of the pointer you want to write to. |
Write | The name of the variable where to put the writeable pointer to. |
- Since (EFL) :
- 1.8.0
Be careful this macro opens a C scope that is expected to be closed by EINA_COW_WRITE_END().
Value:
Definition for the macro to close the writeable pointer.
- Parameters:
-
Cow | The Eina_Cow where the const pointer come from. |
Read | The const pointer to get a writable handler from. |
Write | The name of the variable where to put the writeable pointer to. |
- Since (EFL) :
- 1.8.0
Be careful this macro close the scope opened by EINA_COW_WRITE_BEGIN().
Typedef Documentation
Type of the returned pointer to simplify some reading.
Function Documentation
Instantiates a new Eina_Cow pool.
- Parameters:
-
name | The name of this pool, used for debug. |
struct_size | The size of the object from this pool. |
step | How many objects to allocate when the pool gets empty. |
default_value | The default value returned by this pool. |
gc | Is it possible to run garbage collection on this pool. |
- Returns:
- A valid new Eina_Cow, or
NULL
on error.
- Since :
- 3.0
Returns an initialized pointer from the pool.
- Parameters:
-
cow | The pool to take things from. |
- Returns:
- A pointer to the new pool instance
- Since :
- 3.0
Destroys an Eina_Cow pool and all the allocated memory.
- Parameters:
-
- Since :
- 3.0
Sets back a pointer into read only.
- Parameters:
-
cow | The pool the pointer come from. |
dst | The read only version of the pointer. |
data | The pointer to which data was written to. |
needed_gc | Does this pool need to be garbage collected? |
NOTE: this function is not thread safe, be careful.
- Since :
- 3.0
Frees a pointer from the pool.
- Parameters:
-
cow | The pool to gave back memory to. |
data | The data to give back. |
- Note:
- To simplify the caller code *data will point to the default read only state after the call to this function.
- Since :
- 3.0
Tries to find entries that have the same content and update them.
- Parameters:
-
cow | The cow to try to compact. |
- Returns:
- EINA_TRUE if something was compacted, EINA_FALSE if nothing was.
There is no guaranty in the time it will require, but should remain low. It does run a hash function on all possible common structures trying to find the one that match and merge them into one pointer.
- Since :
- 3.0
Makes the destination contain the same thing as the source pointer.
- Parameters:
-
cow | The pool the pointers come from. |
dst | The destination to update. |
src | The source of information to copy. |
- Since :
- 3.0
Gets a writeable pointer from a const pointer.
- Parameters:
-
cow | The pool the pointer come from. |
src | The pointer you want to write to. |
NOTE: this function is not thread safe, be careful.
- Since :
- 3.0