The m17n Library 1.8.4
|
Objects managed by the reference count
More...
Data Structures | |
struct | M17NObjectHead |
The first member of a managed object. More... | |
Functions | |
void * | m17n_object (int size, void(*freer)(void *)) |
int | m17n_object_ref (void *object) |
Increment the reference count of a managed object. | |
int | m17n_object_unref (void *object) |
Decrement the reference count of a managed object. | |
Objects managed by the reference count
Managed objects are objects managed by the reference count.
There are some types of m17n objects that are managed by their reference count. Those objects are called managed objects. When created, the reference count of a managed object is initialized to one. The m17n_object_ref() function increments the reference count of a managed object by one, and the m17n_object_unref() function decrements by one. A managed object is automatically freed when its reference count becomes zero.
A property whose key is a managing key can have only a managed object as its value. Some functions, for instance msymbol_put() and mplist_put(), pay special attention to such a property.
In addition to the predefined managed object types, users can define their own managed object types. See the documentation of the m17n_object() for more details.
void * m17n_object | ( | int | size, |
void(*)(void *) | freer | ||
) |
@brief Allocate a managed object. The m17n_object() function allocates a new managed object of @b size bytes and sets its reference count to 1. @b freer is the function that is used to free the object when the reference count becomes 0. If @b freer is NULL, the object is freed by the free() function. The heading bytes of the allocated object is occupied by #M17NObjectHead. That area is reserved for the m17n library and application programs should never touch it. @par Return value: This function returns a newly allocated object. @par Errors: This function never fails.
int m17n_object_ref | ( | void * | object | ) |
Increment the reference count of a managed object.
The m17n_object_ref() function increments the reference count of the managed object pointed to by object.
int m17n_object_unref | ( | void * | object | ) |
Decrement the reference count of a managed object.
The m17n_object_unref() function decrements the reference count of the managed object pointed to by object. When the reference count becomes zero, the object is freed by its freer function.