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. */
#ifndef _M17N_PLIST_H_
MSymbol key;
/**en Value of the first element of the plist. */
- void *val;
+ union {
+ void *pointer;
+ M17NFunc func;
+ } val;
/**en Plist for the next element. */
MPlist *next;
/** Macros to access each member of PLIST. */
#define MPLIST_KEY(plist) ((plist)->key)
-#define MPLIST_VAL(plist) ((plist)->val)
+#define MPLIST_VAL(plist) ((plist)->val.pointer)
+#define MPLIST_FUNC(plist) ((plist)->val.func)
#define MPLIST_NEXT(plist) ((plist)->next)
#define MPLIST_TAIL_P(plist) ((plist)->key == Mnil)
#define MPLIST_SET_NESTED_P(plist) \
((plist)->control.flag |= 1)
+#define MPLIST_VAL_FUNC_P(plist) \
+ ((plist)->control.flag & 2)
+#define MPLIST_SET_VAL_FUNC_P(plist) \
+ ((plist)->control.flag |= 2)
+
#define MPLIST_SYMBOL(plist) ((MSymbol) MPLIST_VAL (plist))
#define MPLIST_STRING(plist) ((char *) MPLIST_VAL (plist))
#define MPLIST_MTEXT(plist) ((MText *) MPLIST_VAL (plist))
extern MPlist *mplist__from_string (unsigned char *str, int n);
-extern int mplist__serialize (MText *mt, MPlist *plist);
+extern int mplist__serialize (MText *mt, MPlist *plist, int pretty);
extern MPlist *mplist__conc (MPlist *plist, MPlist *tail);
extern void mplist__pop_unref (MPlist *plist);
+extern MPlist *mplist__assq (MPlist *plist, MSymbol key);
+
#endif /* _M17N_PLIST_H_ */