X-Git-Url: http://git.chise.org/gitweb/?a=blobdiff_plain;f=src%2Fplist.h;h=c6cf5aaaac964df9abbabcb7af267b9aa4dd4485;hb=d1f4e58c580e5422474bf1d8e1e5aa8ef0fe4035;hp=24ebef24c5f8491ad325a0b15e5f31f3aeb589b4;hpb=82066fec65a88c4a7d9f98ca069fb641ee02af97;p=m17n%2Fm17n-lib.git diff --git a/src/plist.h b/src/plist.h index 24ebef2..c6cf5aa 100644 --- a/src/plist.h +++ b/src/plist.h @@ -1,5 +1,5 @@ /* plist.h -- header file for the plist module. - Copyright (C) 2003, 2004 + Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 National Institute of Advanced Industrial Science and Technology (AIST) Registration Number H15PRO112 @@ -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,10 +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_ */