1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109
|
.\" 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
<http://www.gnu.org/licenses/fdl.html>.
|