aboutsummaryrefslogtreecommitdiffstats
path: root/textlist.h
diff options
context:
space:
mode:
authorAkinori Ito <aito@eie.yz.yamagata-u.ac.jp>2001-11-08 05:14:08 +0000
committerAkinori Ito <aito@eie.yz.yamagata-u.ac.jp>2001-11-08 05:14:08 +0000
commit68a07bf03b7624c9924065cce9ffa45497225834 (patch)
treec2adb06a909a8594445e4a3f8587c4bad46e3ecd /textlist.h
downloadw3m-68a07bf03b7624c9924065cce9ffa45497225834.tar.gz
w3m-68a07bf03b7624c9924065cce9ffa45497225834.zip
Initial revision
Diffstat (limited to 'textlist.h')
-rw-r--r--textlist.h73
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 */