X-Git-Url: http://git.chise.org/gitweb/?a=blobdiff_plain;f=src%2Fsymbol.c;h=c3bf5c8b90aa2520ba1d7dcd8716eb38c93d0807;hb=ef71335ceb286b3669919046ebccfbdf8cea9819;hp=c573bb14026753da71ba5d618bac543308eba188;hpb=460cab45886257c1c68e0bde79f0c9cf5646b59f;p=m17n%2Fm17n-lib.git diff --git a/src/symbol.c b/src/symbol.c index c573bb1..c3bf5c8 100644 --- a/src/symbol.c +++ b/src/symbol.c @@ -17,7 +17,7 @@ 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 @@ -155,7 +155,7 @@ msymbol__fini () if (! MPLIST_TAIL_P (&sym->plist)) { if (sym->plist.key->managing_key) - M17N_OBJECT_UNREF (sym->plist.val); + M17N_OBJECT_UNREF (MPLIST_VAL (&sym->plist)); M17N_OBJECT_UNREF (sym->plist.next); sym->plist.key = Mnil; } @@ -660,6 +660,59 @@ msymbol_get (MSymbol symbol, MSymbol key) return (MPLIST_TAIL_P (plist) ? NULL : MPLIST_VAL (plist)); } +/*=*/ +/***en + @brief Set the value (function pointer) of a symbol property. + + The msymbol_put_func () function is similar to msymbol_put () but for + setting function pointer $FUNC as the property value of $SYMBOL for + key $KEY. */ + +/***ja + @brief ¥·¥ó¥Ü¥ë¥×¥í¥Ñ¥Æ¥£¤ÎÃÍ(´Ø¿ô¥Ý¥¤¥ó¥¿)¤òÀßÄꤹ¤ë. + + ´Ø¿ô msymbol_put_func () ¤Ï¡¢´Ø¿ô msymbol_put () ¤ÈƱÍͤˡ¢¥·¥ó¥Ü¥ë + $SYMBOL ¤Î¥­¡¼¤¬ $KEY ¤Ç¤¢¤ë¥·¥ó¥Ü¥ë¥×¥í¥Ñ¥Æ¥£¤ÎÃͤòÀßÄꤹ¤ë¡£Ã¢¤· + ¤½¤ÎÃͤϴؿô¥Ý¥¤¥ó¥¿ $FUNC ¤Ç¤¢¤ë¡£ */ + +/*** + @seealso msymbol_put (), M17N_FUNC () */ +int +msymbol_put_func (MSymbol symbol, MSymbol key, M17NFunc func) +{ + if (symbol == Mnil || key == Mnil) + MERROR (MERROR_SYMBOL, -1); + mplist_put_func (&symbol->plist, key, func); + return 0; +} + +/*=*/ + +/***en + @brief Get the value (function pointer) of a symbol property. + + The msymbol_get_func () function is similar to msymbol_get () but for + getting a function pointer form the property of symbol $SYMBOL. */ + +/***ja + @brief ¥·¥ó¥Ü¥ë¥×¥í¥Ñ¥Æ¥£¤ÎÃÍ (´Ø¿ô¥Ý¥¤¥ó¥¿) ¤òÆÀ¤ë. + + ´Ø¿ô msymbol_get_func () ¤Ï¡¢´Ø¿ô msymbol_get () ¤ÈƱÍͤˡ¢¥·¥ó¥Ü¥ë + $SYMBOL ¤¬»ý¤Ä¥·¥ó¥Ü¥ë¥×¥í¥Ñ¥Æ¥£¤Î¤¦¤Á¡¢¥­¡¼¤¬ $KEY ¤Ç¤¢¤ë¤â¤Î¤òÆÀ¤ë¡£Ã¢¤· + ¤½¤ÎÃͤϴؿô¥Ý¥¤¥ó¥¿¤ò¤Ç¤¢¤ë¡£ */ + +/*** + @seealso + msymbol_get () */ + +M17NFunc +msymbol_get_func (MSymbol symbol, MSymbol key) +{ + if (symbol == Mnil || key == Mnil) + return NULL; + return mplist_get_func (&symbol->plist, key); +} + /*** @} */ #include