m17n_object(3m17n) | The m17n Library | m17n_object(3m17n) |
m17n_object -
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.
typedef struct { M17NObjectHead head; int mem1; char *mem2; } MYStruct; void my_freer (void *obj) { free (((MYStruct *) obj)->mem2); free (obj); } void my_func (MText *mt, MSymbol key, int num, char *str) { MYStruct *st = m17n_object (sizeof (MYStruct), my_freer); st->mem1 = num; st->mem2 = strdup (str); /* KEY must be a managing key. */ mtext_put_prop (mt, 0, mtext_len (mt), key, st); /* This sets the reference count of ST back to 1. */ m17n_object_unref (st); }
Copyright (C) 2001 Information-technology Promotion Agency (IPA)
Copyright (C) 2001-2011 National Institute of Advanced Industrial Science and
Technology (AIST)
Permission is granted to copy, distribute and/or modify this document under
the terms of the GNU Free Documentation License
<http://www.gnu.org/licenses/fdl.html>.
Mon Sep 25 2023 | Version 1.8.4 |