aboutsummaryrefslogtreecommitdiffstatshomepage
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
commit0085b048bff93dd2f247c5fa592a64b4c3f057bf (patch)
tree5ddb4d2cc67f0fec052cb74ca7b52690cd57200f /libroff.h
parente18c5602811ab2af7cc316faebeddca75e6a669b (diff)
downloadmandoc-0085b048bff93dd2f247c5fa592a64b4c3f057bf.tar.gz
mandoc-0085b048bff93dd2f247c5fa592a64b4c3f057bf.tar.zst
mandoc-0085b048bff93dd2f247c5fa592a64b4c3f057bf.zip
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.h23
1 files changed, 8 insertions, 15 deletions
diff --git a/libroff.h b/libroff.h
index f3c7fed1..3f041277 100644
--- a/libroff.h
+++ b/libroff.h
@@ -1,4 +1,4 @@
-/* $Id: libroff.h,v 1.2 2010/12/28 13:46:07 kristaps Exp $ */
+/* $Id: libroff.h,v 1.3 2010/12/29 01:16:57 kristaps Exp $ */
/*
* Copyright (c) 2009, 2010 Kristaps Dzonsons <kristaps@bsd.lv>
*
@@ -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