/***en
@brief Set the value (function pointer) of a property in a property list.
- The mplist_put_func () function is like mplist_put () but for
- settting function pointer $FUNC in property list $PLIST for key
+ The mplist_put_func () function is similar to mplist_put () but for
+ setting function pointer $FUNC in property list $PLIST for key
$KEY. */
+/***ja
+ @brief ¥×¥í¥Ñ¥Æ¥£¥ê¥¹¥ÈÃæ¤Î¥×¥í¥Ñ¥Æ¥£¤Ë´Ø¿ô¥Ý¥¤¥ó¥¿¤Ç¤¢¤ëÃͤòÀßÄꤹ¤ë.
+
+ ´Ø¿ô mplist_put_func () ¤Ï´Ø¿ô mplist_put () ƱÍÍ¡¢¥×¥í¥Ñ¥Æ¥£¥ê¥¹¥È $PLIST
+ Ãæ¤Ç¥¡¼¤¬ $KEY ¤Ç¤¢¤ë¥×¥í¥Ñ¥Æ¥£¤ËÃͤòÀßÄꤹ¤ë¡£Ã¢¤·¤½¤ÎÃͤϴؿô¥Ý¥¤¥ó¥¿
+ $FUNC ¤Ç¤¢¤ë¡£ */
+
+
/***
@seealso
mplist_put (), M17N_FUNC () */
{
if (key == Mnil)
MERROR (MERROR_PLIST, NULL);
- do {
- MPLIST_FIND (plist, key);
- } while (! MPLIST_TAIL_P (plist) && ! MPLIST_VAL_FUNC_P (plist));
+ while (1)
+ {
+ MPLIST_FIND (plist, key);
+ if (MPLIST_TAIL_P (plist) || MPLIST_VAL_FUNC_P (plist))
+ break;
+ plist = MPLIST_NEXT (plist);
+ };
MPLIST_KEY (plist) = (key);
MPLIST_FUNC (plist) = func;
+ MPLIST_SET_VAL_FUNC_P (plist);
if (! plist->next)
MPLIST_NEW ((plist)->next);
return plist;
/***en
@brief Get the value (function pointer) of a property in a property list.
- The mplist_get_func () funciont is like mplist_get () but for
+ The mplist_get_func () function is similar to mplist_get () but for
getting a function pointer from property list $PLIST by key $KEY. */
+/***ja
+ @brief ¥×¥í¥Ñ¥Æ¥£¥ê¥¹¥È¤«¤é¥×¥í¥Ñ¥Æ¥£¤Î´Ø¿ô¥Ý¥¤¥ó¥¿¤Ç¤¢¤ëÃͤòÆÀ¤ë.
+
+ ´Ø¿ô mplist_get_func () ¤Ï´Ø¿ô mplist_get () ¤ÈƱÍͤˡ¢¥×¥í¥Ñ¥Æ¥£¥ê
+ ¥¹¥È $PLIST Ãæ¤Ç¥¡¼¤¬ $KEY ¤Ç¤¢¤ë¥×¥í¥Ñ¥Æ¥£¤ÎÃÍ¡¢Ã¢¤·´Ø¿ô¥Ý¥¤¥ó¥¿¡¢
+ ¤òÆÀ¤ë¡£ */
+
+
/***
@seealso
mplist_get () */
M17NFunc
mplist_get_func (MPlist *plist, MSymbol key)
{
- do {
- MPLIST_FIND (plist, key);
- } while (! MPLIST_TAIL_P (plist) && ! MPLIST_VAL_FUNC_P (plist));
+ MPLIST_FIND (plist, key);
return (MPLIST_TAIL_P (plist) ? NULL : MPLIST_FUNC (plist));
}