You should have received a copy of the GNU Lesser General Public
License along with the m17n library; if not, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
02111-1307, USA. */
/***en
int
mchar__init ()
{
- char_prop_list = mplist ();
-
- Mname
- = mchar_define_property ("name", Mstring);
- Mcategory
- = mchar_define_property ("category", Msymbol);
- Mcombining_class
- = mchar_define_property ("combining-class", Minteger);
- Mbidi_category
- = mchar_define_property ("bidirectional-category", Msymbol);
- Msimple_case_folding
- = mchar_define_property ("simple-case-folding", Minteger);
- Mcomplicated_case_folding
- = mchar_define_property ("complicated-case-folding", Mtext);
- Mscript
- = mchar_define_property ("script", Msymbol);
+ Mname = msymbol ("name");
+ Mcategory = msymbol ("category");
+ Mcombining_class = msymbol ("combining-class");
+ Mbidi_category = msymbol ("bidirectional-category");
+ Msimple_case_folding = msymbol ("simple-case-folding");
+ Mcomplicated_case_folding = msymbol ("complicated-case-folding");
+ Mscript = msymbol ("script");
return 0;
}
{
MPlist *p;
- for (p = char_prop_list; mplist_key (p) != Mnil; p = mplist_next (p))
+ if (char_prop_list)
{
- MCharPropRecord *record = mplist_value (p);
-
- if (record->table)
+ for (p = char_prop_list; mplist_key (p) != Mnil; p = mplist_next (p))
{
- if (record->type == Mstring)
- mchartable_map (record->table, NULL, free_string, NULL);
- M17N_OBJECT_UNREF (record->table);
+ MCharPropRecord *record = mplist_value (p);
+
+ if (record->table)
+ {
+ if (record->type == Mstring)
+ mchartable_map (record->table, NULL, free_string, NULL);
+ M17N_OBJECT_UNREF (record->table);
+ }
+ free (record);
}
- free (record);
+ M17N_OBJECT_UNREF (char_prop_list);
}
- M17N_OBJECT_UNREF (char_prop_list);
}
+void
+mchar__define_prop (MSymbol key, MSymbol type, void *mdb)
+{
+ MCharPropRecord *record;
+
+ if (char_prop_list)
+ record = mplist_get (char_prop_list, key);
+ else
+ char_prop_list = mplist (), record = NULL;
+ if (record)
+ {
+ if (record->table)
+ M17N_OBJECT_UNREF (record->table);
+ }
+ else
+ {
+ MSTRUCT_CALLOC (record, MERROR_CHAR);
+ mplist_put (char_prop_list, key, record);
+ }
+
+ record->type = type;
+ record->mdb = mdb;
+ if (mdb)
+ {
+ record->table = NULL;
+ }
+ else
+ {
+ void *default_value = NULL;
+
+ if (type == Minteger)
+ default_value = (void *) -1;
+ record->table = mchartable (type, default_value);
+ }
+}
+
+
/*** @} */
#endif /* !FOR_DOXYGEN || DOXYGEN_INTERNAL_MODULE */
\f
mchar_define_property (const char *name, MSymbol type)
{
MSymbol key = msymbol (name);
- MCharPropRecord *record;
+ void *mdb;
- record = mplist_get (char_prop_list, key);
- if (record)
- {
- if (record->table)
- M17N_OBJECT_UNREF (record->table);
- }
+ if (mdatabase__finder)
+ mdb = (*mdatabase__finder) (Mchar_table, type, key, Mnil);
else
- {
- MSTRUCT_CALLOC (record, MERROR_CHAR);
- mplist_put (char_prop_list, key, record);
- }
-
- record->type = type;
- if (mdatabase__finder
- && (record->mdb = (*mdatabase__finder) (Mchar_table, type, key, Mnil)))
- {
- record->table = NULL;
- }
- else
- {
- void *default_value = NULL;
-
- record->mdb = NULL;
- if (type == Minteger)
- default_value = (void *) -1;
- record->table = mchartable (type, default_value);
- }
-
+ mdb = NULL;
+ mchar__define_prop (key, type, mdb);
return key;
}
{
MCharPropRecord *record;
+ if (! char_prop_list)
+ return NULL;
record = mplist_get (char_prop_list, key);
if (! record)
return NULL;
{
MCharPropRecord *record;
+ if (! char_prop_list)
+ MERROR (MERROR_CHAR, -1);
record = mplist_get (char_prop_list, key);
if (! record)
return -1;
The mchar_get_prop_table () function returns a char-table that
contains the character property whose key is $KEY. If $TYPE is
- not null, this function store the type of the property in the
+ not NULL, this function stores the type of the property in the
place pointed by $TYPE. See mchar_define_property () for types of
character property.
@return
- If $KEY is a valid character property key, return a char-table.
- Otherwise retun NULL. */
+ If $KEY is a valid character property key, this function returns a
+ char-table. Otherwise NULL is retuned. */
+
+/***ja
+ @brief ʸ»ú¥×¥í¥Ñ¥Æ¥£¤Îʸ»ú¥Æ¡¼¥Ö¥ë¤òÆÀ¤ë.
+
+ ´Ø¿ô mchar_get_prop_table () ¤Ï¡¢¥¡¼¤¬ $KEY ¤Ç¤¢¤ëʸ»ú¥×¥í¥Ñ¥Æ¥£
+ ¤ò´Þ¤àʸ»ú¥Æ¡¼¥Ö¥ë¤òÊÖ¤¹¡£¤â¤· $TYPE ¤¬ NULL ¤Ç¤Ê¤±¤ì¤Ð¡¢ $TYPE ¤Ç
+ »Ø¤µ¤ì¤ë¾ì½ê¤Ë¤½¤Îʸ»ú¤Î¥×¥í¥Ñ¥Æ¥£¤ò³ÊǼ¤¹¤ë¡£Ê¸»ú¥×¥í¥Ñ¥Æ¥£¤Î¼ïÎà
+ ¤Ë´Ø¤·¤Æ¤Ï mchar_define_property () ¤ò¸«¤è¡£
+ @return
+ ¤â¤· $KEY ¤¬ÀµÅö¤Êʸ»ú¥×¥í¥Ñ¥Æ¥£¤Î¥¡¼¤Ç¤¢¤ì¤Ð¡¢Ê¸»ú¥Æ¡¼¥Ö¥ë¤¬ÊÖ¤µ
+ ¤ì¤ë¡£¤½¤¦¤Ç¤Ê¤¤¾ì¹ç¤Ï NULL ¤¬ÊÖ¤µ¤ì¤ë¡£ */
MCharTable *
mchar_get_prop_table (MSymbol key, MSymbol *type)
{
MCharPropRecord *record;
+ if (! char_prop_list)
+ return NULL;
record = mplist_get (char_prop_list, key);
if (! record)
return NULL;