]> git.cameronkatri.com Git - mandoc.git/blobdiff - mandoc.h
Split the document parsing sequence out of main.c and into read.c,
[mandoc.git] / mandoc.h
index 447dbd55d8f3534daf538b51a1e104c98bf0057c..cb7935435727f492c7f1245e20032e8b0d1e8d11 100644 (file)
--- a/mandoc.h
+++ b/mandoc.h
@@ -1,4 +1,4 @@
-/*     $Id: mandoc.h,v 1.60 2011/03/17 09:16:38 kristaps Exp $ */
+/*     $Id: mandoc.h,v 1.62 2011/03/20 11:41:24 kristaps Exp $ */
 /*
  * Copyright (c) 2010, 2011 Kristaps Dzonsons <kristaps@bsd.lv>
  *
@@ -328,11 +328,36 @@ enum      mdelim {
        DELIM_CLOSE
 };
 
-typedef        int     (*mandocmsg)(enum mandocerr, void *,
+/*
+ * The type of parse sequence.  This value is usually passed via the
+ * mandoc(1) command line of -man and -mdoc.  It's almost exclusively
+ * -mandoc but the others have been retained for compatibility.
+ */
+enum   mparset {
+       MPARSE_AUTO, /* magically determine the document type */
+       MPARSE_MDOC, /* assume -mdoc */
+       MPARSE_MAN /* assume -man */
+};
+
+typedef        void    (*mandocmsg)(enum mandocerr, void *,
                        int, int, const char *);
+typedef        int     (*mevt_open)(void *, const char *);
+typedef        void    (*mevt_close)(void *, const char *);
+
+struct mparse;
+struct mdoc;
+struct man;
 
 __BEGIN_DECLS
 
+void             mparse_free(struct mparse *);
+void             mparse_reset(struct mparse *);
+struct mparse   *mparse_alloc(enum mparset, mevt_open, 
+                       mevt_close, mandocmsg, void *);
+void             mparse_setstatus(struct mparse *, enum mandoclevel);
+enum mandoclevel  mparse_readfd(struct mparse *, int, const char *);
+void             mparse_result(struct mparse *, struct mdoc **, struct man **);
+
 void            *mandoc_calloc(size_t, size_t);
 void            *mandoc_malloc(size_t);
 void            *mandoc_realloc(void *, size_t);