summaryrefslogtreecommitdiffstats
path: root/libroff.h
diff options
context:
space:
mode:
authorKristaps Dzonsons <kristaps@bsd.lv>2010-12-29 01:16:57 +0000
committerKristaps Dzonsons <kristaps@bsd.lv>2010-12-29 01:16:57 +0000
commitd5144ffde6d84d22eacbce42462bf2486d995d91 (patch)
tree28406a7c095ee0bce715cd92848a1380533df824 /libroff.h
parent752a79323a3403cb04e5f83d296286dbb0457369 (diff)
downloadmandoc-d5144ffde6d84d22eacbce42462bf2486d995d91.tar.gz
Significant update to options handling, which now departs almost
completely with the BSD.lv code due to performance issues and flat-out errors. Performance issues: functions called per character. Ugly. Flat-out errors: disallowing "reserved" tokens as arguments to those options accepting arguments. Also added are two mandoc.h error codes for general tbl syntax errors and for bad options.
Diffstat (limited to 'libroff.h')
-rw-r--r--libroff.h21
1 files changed, 7 insertions, 14 deletions
diff --git a/libroff.h b/libroff.h
index 755a3e1d..50c59485 100644
--- a/libroff.h
+++ b/libroff.h
@@ -19,18 +19,6 @@
__BEGIN_DECLS
-enum tbl_tok {
- TBL_TOK_OPENPAREN = 0,
- TBL_TOK_CLOSEPAREN,
- TBL_TOK_COMMA,
- TBL_TOK_SEMICOLON,
- TBL_TOK_PERIOD,
- TBL_TOK_SPACE,
- TBL_TOK_TAB,
- TBL_TOK_NIL,
- TBL_TOK__MAX
-};
-
enum tbl_part {
TBL_PART_OPTS, /* in options (first line) */
TBL_PART_LAYOUT, /* describing layout */
@@ -38,8 +26,9 @@ enum tbl_part {
};
struct tbl {
+ mandocmsg msg; /* status messages */
+ void *data; /* privdata for messages */
enum tbl_part part;
- char buf[BUFSIZ];
char tab; /* cell-separator */
char decimal; /* decimal point */
int linesize;
@@ -54,11 +43,15 @@ struct tbl {
#define TBL_OPT_NOSPACE (1 << 6)
};
-struct tbl *tbl_alloc(void);
+#define TBL_MSG(tblp, type, line, col) \
+ (*(tblp)->msg)((type), (tblp)->data, (line), (col), NULL)
+
+struct tbl *tbl_alloc(void *, mandocmsg);
void tbl_free(struct tbl *);
void tbl_reset(struct tbl *);
enum rofferr tbl_read(struct tbl *, int, const char *, int);
enum tbl_tok tbl_next(struct tbl *, const char *, int *);
+int tbl_option(struct tbl *, int, const char *);
__END_DECLS