add line length and make it utf-8 compatible
[smdp.git] / include / markdown.h
index b4812f5..dc759e0 100644 (file)
@@ -7,20 +7,15 @@
  */
 
 #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 {
@@ -28,6 +23,7 @@ typedef struct _line_t {
     struct _line_t *prev;
     struct _line_t *next;
     int bits;
+    int length;
     int offset;
 } line_t;
 
@@ -38,39 +34,14 @@ typedef struct _page_t {
 } page_t;
 
 typedef struct _document_t {
-    line_t *title;
-    line_t *author;
-    line_t *date;
+    line_t *header;
     page_t *page;
 } document_t;
 
-line_t *new_line() {
-    line_t *x = malloc(sizeof(line_t));
-    return x;
-}
-
-line_t *next_line(line_t *prev) {
-    line_t *x = new_line();
-    x->prev = prev;
-    prev->next = x;
-    return x;
-}
-
-page_t *new_page() {
-    page_t *x = malloc(sizeof(page_t));
-    return x;
-}
-
-page_t *next_page(page_t *prev) {
-    page_t *x = new_page();
-    x->prev = prev;
-    prev->next = x;
-    return x;
-}
-
-document_t *new_document() {
-    document_t *x = malloc(sizeof(document_t));
-    return x;
-}
+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();
 
 #endif // !defined( MARKDOWN_H )