.\" Copyright (C) 2001 Information-technology Promotion Agency (IPA)
.\" Copyright (C) 2001-2009
.\"   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 "15 Oct 2009" "" "Version 1.5.5" "" "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. 
.PP
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\-2009 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 
<http://www.gnu.org/licenses/fdl.html>.
