added/removed some markdown bits
[smdp.git] / include / markdown.h
1 #if !defined( MARKDOWN_H )
2 #define MARKDOWN_H
3
4 /*
5  * A implementation of markdown objects.
6  *
7  */
8
9 #include "cstring.h"
10
11 #define SET_BIT(var, pos)    ((var) |= (1<<(pos)))
12 #define CLEAR_BIT(var, pos)  ((var) &= (~(1<<(pos))))
13 #define TOGGLE_BIT(var, pos) ((var) ^= (1<<(pos)))
14 #define CHECK_BIT(var, pos)  ((var) &  (1<<(pos)))
15
16 enum line_bitmask {
17     IS_H1,
18     IS_H2,
19     IS_QUOTE,
20     IS_CODE,
21     IS_HR,
22     IS_EMPTY
23 };
24
25 typedef struct _line_t {
26     cstring_t *text;
27     struct _line_t *prev;
28     struct _line_t *next;
29     int bits;
30     int offset;
31 } line_t;
32
33 typedef struct _page_t {
34     line_t *line;
35     struct _page_t *prev;
36     struct _page_t *next;
37 } page_t;
38
39 typedef struct _document_t {
40     line_t *header;
41     page_t *page;
42 } document_t;
43
44 line_t *new_line();
45 line_t *next_line(line_t *prev);
46 page_t *new_page();
47 page_t *next_page(page_t *prev);
48 document_t *new_document();
49 int is_utf8(char ch);
50 int next_nonblank(cstring_t *text, int i);
51 int next_blank(cstring_t *text, int i);
52 document_t *markdown_load(FILE *input);
53
54 #endif // !defined( MARKDOWN_H )