*/
#include "cstring.h"
-
-#define SET_BIT(var, pos) ((var) |= (1<<(pos)))
-#define CLEAR_BIT(var, pos) ((var) &= (~(1<<(pos))))
-#define TOGGLE_BIT(var, pos) ((var) ^= (1<<(pos)))
-#define CHECK_BIT(var, pos) ((var) & (1<<(pos)))
+#include "bitops.h"
enum line_bitmask {
- IS_HEADER,
- IS_HEADER2,
+ IS_H1,
+ IS_H2,
IS_QUOTE,
IS_CODE,
- IS_LIST,
- IS_NUMLIST,
- IS_HR
+ IS_HR,
+ IS_EMPTY
};
typedef struct _line_t {
struct _line_t *prev;
struct _line_t *next;
int bits;
+ int length;
int offset;
} line_t;
-typedef struct _page_t {
+typedef struct _slide_t {
line_t *line;
- struct _page_t *prev;
- struct _page_t *next;
-} page_t;
+ struct _slide_t *prev;
+ struct _slide_t *next;
+ int lines;
+} slide_t;
-typedef struct _document_t {
+typedef struct _deck_t {
line_t *header;
- page_t *page;
-} document_t;
+ slide_t *slide;
+ int slides;
+ int headers;
+} deck_t;
line_t *new_line();
line_t *next_line(line_t *prev);
-page_t *new_page();
-page_t *next_page(page_t *prev);
-document_t *new_document();
-int is_utf8(char ch);
-int next_nonblank(cstring_t *text, int i);
-int next_blank(cstring_t *text, int i);
-document_t *markdown_load(FILE *input);
+slide_t *new_slide();
+slide_t *next_slide(slide_t *prev);
+deck_t *new_deck();
#endif // !defined( MARKDOWN_H )