1 /* $Id: libroff.h,v 1.39 2015/11/07 14:01:16 schwarze Exp $ */
3 * Copyright (c) 2009, 2010, 2011 Kristaps Dzonsons <kristaps@bsd.lv>
4 * Copyright (c) 2014, 2015 Ingo Schwarze <schwarze@openbsd.org>
6 * Permission to use, copy, modify, and distribute this software for any
7 * purpose with or without fee is hereby granted, provided that the above
8 * copyright notice and this permission notice appear in all copies.
10 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
11 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
12 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
13 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
14 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
15 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
16 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
20 TBL_PART_OPTS
, /* in options (first line) */
21 TBL_PART_LAYOUT
, /* describing layout */
22 TBL_PART_DATA
, /* creating data rows */
23 TBL_PART_CDATA
/* continue previous row */
27 struct mparse
*parse
; /* parse point */
28 int pos
; /* invocation column */
29 int line
; /* invocation line */
32 struct tbl_row
*first_row
;
33 struct tbl_row
*last_row
;
34 struct tbl_span
*first_span
;
35 struct tbl_span
*current_span
;
36 struct tbl_span
*last_span
;
37 struct tbl_node
*next
;
41 struct eqn eqn
; /* syntax tree of this equation */
42 struct mparse
*parse
; /* main parser, for error reporting */
43 struct eqn_node
*next
; /* singly linked list of equations */
44 struct eqn_def
*defs
; /* array of definitions */
45 char *data
; /* source code of this equation */
46 size_t defsz
; /* number of definitions */
47 size_t sz
; /* length of the source code */
48 size_t cur
; /* parse point in the source code */
49 size_t rew
; /* beginning of the current token */
50 int gsize
; /* default point size */
51 int delim
; /* in-line delimiters enabled */
52 char odelim
; /* in-line opening delimiter */
53 char cdelim
; /* in-line closing delimiter */
64 struct tbl_node
*tbl_alloc(int, int, struct mparse
*);
65 void tbl_restart(int, int, struct tbl_node
*);
66 void tbl_free(struct tbl_node
*);
67 void tbl_reset(struct tbl_node
*);
68 enum rofferr
tbl_read(struct tbl_node
*, int, const char *, int);
69 void tbl_option(struct tbl_node
*, int, const char *, int *);
70 void tbl_layout(struct tbl_node
*, int, const char *, int);
71 void tbl_data(struct tbl_node
*, int, const char *, int);
72 int tbl_cdata(struct tbl_node
*, int, const char *, int);
73 const struct tbl_span
*tbl_span(struct tbl_node
*);
74 int tbl_end(struct tbl_node
**);
75 struct eqn_node
*eqn_alloc(int, int, struct mparse
*);
76 enum rofferr
eqn_end(struct eqn_node
**);
77 void eqn_free(struct eqn_node
*);
78 enum rofferr
eqn_read(struct eqn_node
**, int,
79 const char *, int, int *);