.\" Copyright (C) 2001 Information-technology Promotion Agency (IPA) .\" Copyright (C) 2001-2011 .\" National Institute of Advanced Industrial Science and Technology (AIST) .\" This file is part 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, no Front-Cover Texts, .\" and no Back-Cover Texts. A copy of the license is included in the .\" appendix entitled "GNU Free Documentation License". .TH "m17n_object" 3m17n "12 Jan 2011" "Version 1.6.2" "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 Allocate a managed object. 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 .SH Example: .PP .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 .SH COPYRIGHT Copyright (C) 2001 Information\-technology Promotion Agency (IPA) .br Copyright (C) 2001\-2011 National Institute of Advanced Industrial Science and Technology (AIST) .br Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License .