Provided by: m17n-docs_1.6.2-5_all bug

NAME

       m17n_object - Allocate a managed object.

SYNOPSIS

       void* m17n_object (int size, void(*)(void *) freer)

DESCRIPTION

       Allocate a managed object. The m17n_object() function allocates a new managed object of
       size bytes and sets its reference count to 1.  freer is the function that is used to free
       the object when the reference count becomes 0. If 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.

RETURN VALUE

           This function returns a newly allocated object.

ERRORS

           This function never fails.

Example:

           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

       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>.