Provided by: m17n-docs_1.8.4-1_all bug

NAME

       m17n_object -

SYNOPSIS

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

DESCRIPTION

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

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