(ft_open, ft_encapsulate): Set rfont->id.
[m17n/m17n-lib.git] / src / plist.h
index a0ce3dd..80f94aa 100644 (file)
@@ -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.  */
 
 #ifndef _M17N_PLIST_H_
@@ -35,7 +35,10 @@ struct MPlist
   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;
@@ -44,7 +47,8 @@ struct MPlist
 /** 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)
 
@@ -55,10 +59,15 @@ struct MPlist
 #define MPLIST_PLIST_P(plist) (MPLIST_KEY (plist) == Mplist)
 
 #define MPLIST_NESTED_P(plist) \
-  (MPLIST_PLIST_P (plist) || (plist)->control.flag & 1)
+  ((plist)->control.flag & 1)
 #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))
@@ -100,6 +109,12 @@ extern MPlist *mplist__from_alist (MPlist *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_ */