diff options
author | Akinori Ito <aito@eie.yz.yamagata-u.ac.jp> | 2001-11-08 05:14:08 +0000 |
---|---|---|
committer | Akinori Ito <aito@eie.yz.yamagata-u.ac.jp> | 2001-11-08 05:14:08 +0000 |
commit | 68a07bf03b7624c9924065cce9ffa45497225834 (patch) | |
tree | c2adb06a909a8594445e4a3f8587c4bad46e3ecd /textlist.h | |
download | w3m-68a07bf03b7624c9924065cce9ffa45497225834.tar.gz w3m-68a07bf03b7624c9924065cce9ffa45497225834.zip |
Initial revision
Diffstat (limited to 'textlist.h')
-rw-r--r-- | textlist.h | 73 |
1 files changed, 73 insertions, 0 deletions
diff --git a/textlist.h b/textlist.h new file mode 100644 index 0000000..3548ff1 --- /dev/null +++ b/textlist.h @@ -0,0 +1,73 @@ +#ifndef TEXTLIST_H +#define TEXTLIST_H +#include "Str.h" + +/* General doubly linked list */ + +typedef struct _listitem { + void *ptr; + struct _listitem *next; + struct _listitem *prev; +} ListItem; + +typedef struct _generallist { + ListItem *first; + ListItem *last; + short nitem; +} GeneralList; + +extern ListItem *newListItem(void *s, ListItem * n, ListItem * p); +extern GeneralList *newGeneralList(void); +extern void pushValue(GeneralList * tl, void *s); +extern void *popValue(GeneralList * tl); +extern void *rpopValue(GeneralList * tl); +extern GeneralList *appendGeneralList(GeneralList *, GeneralList *); + +/* Text list */ + +typedef struct _textlistitem { + char *ptr; + struct _textlistitem *next; + struct _textlistitem *prev; +} TextListItem; + +typedef struct _textlist { + TextListItem *first; + TextListItem *last; + short nitem; +} TextList; + +#define newTextList() ((TextList *)newGeneralList()) +#define pushText(tl, s) pushValue((GeneralList *)(tl), (void *)allocStr((s)?(s):"",0)) +#define popText(tl) ((char *)popValue((GeneralList *)(tl))) +#define rpopText(tl) ((char *)rpopValue((GeneralList *)(tl))) +#define appendTextList(tl, tl2) ((TextList *)appendGeneralList((GeneralList *)(tl), (GeneralList *)(tl2))) + +/* Line text list */ + +typedef struct _TextLine { + Str line; + short pos; +} TextLine; + +typedef struct _textlinelistitem { + TextLine *ptr; + struct _textlinelistitem *next; + struct _textlinelistitem *prev; +} TextLineListItem; + +typedef struct _textlinelist { + TextLineListItem *first; + TextLineListItem *last; + short nitem; +} TextLineList; + +extern TextLine *newTextLine(Str line, int pos); +extern void appendTextLine(TextLineList * tl, Str line, int pos); +#define newTextLineList() ((TextLineList *)newGeneralList()) +#define pushTextLine(tl,lbuf) pushValue((GeneralList *)(tl),(void *)(lbuf)) +#define popTextLine(tl) ((TextLine *)popValue((GeneralList *)(tl))) +#define rpopTextLine(tl) ((TextLine *)rpopValue((GeneralList *)(tl))) +#define appendTextLineList(tl, tl2) ((TextLineList *)appendGeneralList((GeneralList *)(tl), (GeneralList *)(tl2))) + +#endif /* not TEXTLIST_H */ |