.\" Copyright (C) 2001 Information-technology Promotion Agency (IPA) .\" Copyright (C) 2001-2003 .\" National Institute of Advanced Industrial Science and Technology (AIST) .\" This file si aprt of the m17n library documentation. .\" Permission is granted to copy, distribute and/or modify this document .\" under the terms of the GNU Free Documentation License, Version 1.2 or .\" any later version published by the Free Software Foundation; with no .\" Invariant Section, Front-Cover Texts "The m17n library documentation", .\" and no Back-Cover Texts. A copy of the license is included in the .\" appendix entitled "GNU Free Documentation License". .TH "m17n_object" 3m17n "14 Jul 2007" "" "Version 1.4.0" "" "The m17n Library" \" -*- nroff -*- .ad l .nh .SH NAME m17n_object - Allocate a managed object. .SH SYNOPSIS void* \fBm17n_object\fP (int \fIsize\fP, void(*)(void *) \fIfreer\fP) .SH DESCRIPTION The .ft B m17n_object() .ft R function allocates a new managed object of .ft B size .ft R bytes and sets its reference count to 1. .ft B freer .ft R is the function that is used to free the object when the reference count becomes 0. If .ft B freer .ft R is NULL, the object is freed by the free() function. .PP The heading bytes of the allocated object is occupied by .ft B M17NObjectHead\fP. .ft R That area is reserved for the m17n library and application programs should never touch it. .PP .SH RETURN VALUE .PP.RS 4 This function returns a newly allocated object. .RE .PP .SH ERRORS .PP.RS 4 This function never fails. .RE .PP .SS Example.RS 4 .PP .nf 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); } .fi .fi .RE .PP