Inline comments respect escaped braces.
[sgt/halibut] / halibut.h
index c948624..3fc752d 100644 (file)
--- a/halibut.h
+++ b/halibut.h
@@ -4,6 +4,7 @@
 #include <stdio.h>
 #include <wchar.h>
 #include <time.h>
+#include <string.h>
 
 #ifdef __GNUC__
 #define NORETURN __attribute__((__noreturn__))
@@ -101,13 +102,18 @@ enum {
     para_BiblioCited,                 /*  ... into this paragraph type */
     para_Bullet,
     para_NumberedList,
+    para_DescribedThing,
+    para_Description,
     para_Code,
     para_Copyright,
-    para_Preamble,
     para_NoCite,
     para_Title,
     para_VersionID,
     para_Config,                      /* configuration directive */
+    para_LcontPush,                   /* begin continuation of list item */
+    para_LcontPop,                    /* end continuation of list item */
+    para_QuotePush,                   /* begin block quote */
+    para_QuotePop,                    /* end block quote */
     para_NotParaType                  /* placeholder value */
 };
 
@@ -197,6 +203,7 @@ enum {
     err_commenteof,                   /* EOF inside braced comment */
     err_kwexprbr,                     /* expected `}' after cross-ref */
     err_missingrbrace,                /* unclosed braces at end of para */
+    err_missingrbrace2,                       /* unclosed braces at end of file */
     err_nestedstyles,                 /* unable to nest text styles */
     err_nestedindex,                  /* unable to nest `\i' thingys */
     err_nosuchkw,                     /* unresolved cross-reference */
@@ -207,6 +214,8 @@ enum {
     err_sectjump,                     /* jump a heading level, eg \C -> \S */
     err_winhelp_ctxclash,             /* WinHelp context ID hash clash */
     err_multikw,                      /* keyword clash in sections */
+    err_misplacedlcont,                       /* \lcont not after a list item */
+    err_sectmarkerinblock,            /* section marker appeared in block */
     err_whatever                       /* random error of another type */
 };
 
@@ -240,10 +249,14 @@ char *dupstr(char *s);
  */
 wchar_t *ustrdup(wchar_t *s);
 char *ustrtoa(wchar_t *s, char *outbuf, int size);
+wchar_t *ustrfroma(char *s, wchar_t *outbuf, int size);
+char *utoa_dup(wchar_t *s);
+wchar_t *ufroma_dup(char *s);
 int ustrlen(wchar_t *s);
 wchar_t *uadv(wchar_t *s);
 wchar_t *ustrcpy(wchar_t *dest, wchar_t *source);
 wchar_t utolower(wchar_t);
+int uisalpha(wchar_t);
 int ustrcmp(wchar_t *lhs, wchar_t *rhs);
 int ustricmp(wchar_t *lhs, wchar_t *rhs);
 int utoi(wchar_t *);
@@ -277,6 +290,7 @@ stack stk_new(void);
 void stk_free(stack);
 void stk_push(stack, void *);
 void *stk_pop(stack);
+void *stk_top(stack);
 
 typedef struct tagRdstring rdstring;
 struct tagRdstring {
@@ -384,7 +398,7 @@ indextag *index_findtag(indexdata *idx, wchar_t *name);
  */
 numberstate *number_init(void);
 void number_cfg(numberstate *, paragraph *);
-word *number_mktext(numberstate *, paragraph *, wchar_t *, int , int *);
+word *number_mktext(numberstate *, paragraph *, wchar_t *, int *, int *);
 void number_free(numberstate *);
 
 /*
@@ -402,15 +416,24 @@ struct userstyle_Tag {
  * bk_text.c
  */
 void text_backend(paragraph *, keywordlist *, indexdata *);
+paragraph *text_config_filename(char *filename);
 
 /*
  * bk_xhtml.c
  */
 void xhtml_backend(paragraph *, keywordlist *, indexdata *);
+paragraph *xhtml_config_filename(char *filename);
 
 /*
  * bk_whlp.c
  */
 void whlp_backend(paragraph *, keywordlist *, indexdata *);
+paragraph *whlp_config_filename(char *filename);
+
+/*
+ * bk_man.c
+ */
+void man_backend(paragraph *, keywordlist *, indexdata *);
+paragraph *man_config_filename(char *filename);
 
 #endif