Return to libroff.h CVS log | Up to [cvsweb.bsd.lv] / mandoc |
version 1.15, 2011/01/02 10:10:57 | version 1.24, 2011/07/21 23:30:39 | ||
---|---|---|---|
|
|
||
/* $Id$ */ | /* $Id$ */ | ||
/* | /* | ||
* Copyright (c) 2009, 2010 Kristaps Dzonsons <kristaps@bsd.lv> | * Copyright (c) 2009, 2010, 2011 Kristaps Dzonsons <kristaps@bsd.lv> | ||
* | * | ||
* Permission to use, copy, modify, and distribute this software for any | * Permission to use, copy, modify, and distribute this software for any | ||
* purpose with or without fee is hereby granted, provided that the above | * purpose with or without fee is hereby granted, provided that the above | ||
|
|
||
enum tbl_part { | enum tbl_part { | ||
TBL_PART_OPTS, /* in options (first line) */ | TBL_PART_OPTS, /* in options (first line) */ | ||
TBL_PART_LAYOUT, /* describing layout */ | TBL_PART_LAYOUT, /* describing layout */ | ||
TBL_PART_DATA /* creating data rows */ | TBL_PART_DATA, /* creating data rows */ | ||
TBL_PART_CDATA /* continue previous row */ | |||
}; | }; | ||
struct tbl_node { | struct tbl_node { | ||
mandocmsg msg; /* status messages */ | struct mparse *parse; /* parse point */ | ||
void *data; /* privdata for messages */ | |||
int pos; /* invocation column */ | int pos; /* invocation column */ | ||
int line; /* invocation line */ | int line; /* invocation line */ | ||
enum tbl_part part; | enum tbl_part part; | ||
|
|
||
struct tbl_row *first_row; | struct tbl_row *first_row; | ||
struct tbl_row *last_row; | struct tbl_row *last_row; | ||
struct tbl_span *first_span; | struct tbl_span *first_span; | ||
struct tbl_span *current_span; | |||
struct tbl_span *last_span; | struct tbl_span *last_span; | ||
struct tbl_head *first_head; | struct tbl_head *first_head; | ||
struct tbl_head *last_head; | struct tbl_head *last_head; | ||
struct tbl_node *next; | struct tbl_node *next; | ||
}; | }; | ||
#define TBL_MSG(tblp, type, line, col) \ | struct eqn_node { | ||
(*(tblp)->msg)((type), (tblp)->data, (line), (col), NULL) | struct eqn_def *defs; | ||
size_t defsz; | |||
char *data; | |||
size_t rew; | |||
size_t cur; | |||
size_t sz; | |||
struct eqn eqn; | |||
struct mparse *parse; | |||
struct eqn_node *next; | |||
}; | |||
struct tbl_node *tbl_alloc(int, int, void *, mandocmsg); | struct eqn_def { | ||
char *key; | |||
size_t keysz; | |||
char *val; | |||
size_t valsz; | |||
}; | |||
struct tbl_node *tbl_alloc(int, int, struct mparse *); | |||
void tbl_restart(int, int, struct tbl_node *); | void tbl_restart(int, int, struct tbl_node *); | ||
void tbl_free(struct tbl_node *); | void tbl_free(struct tbl_node *); | ||
void tbl_reset(struct tbl_node *); | void tbl_reset(struct tbl_node *); | ||
|
|
||
int tbl_option(struct tbl_node *, int, const char *); | int tbl_option(struct tbl_node *, int, const char *); | ||
int tbl_layout(struct tbl_node *, int, const char *); | int tbl_layout(struct tbl_node *, int, const char *); | ||
int tbl_data(struct tbl_node *, int, const char *); | int tbl_data(struct tbl_node *, int, const char *); | ||
const struct tbl_span *tbl_span(const struct tbl_node *); | int tbl_cdata(struct tbl_node *, int, const char *); | ||
const struct tbl_span *tbl_span(struct tbl_node *); | |||
void tbl_end(struct tbl_node *); | void tbl_end(struct tbl_node *); | ||
struct eqn_node *eqn_alloc(int, int, struct mparse *); | |||
enum rofferr eqn_end(struct eqn_node *); | |||
void eqn_free(struct eqn_node *); | |||
enum rofferr eqn_read(struct eqn_node **, int, | |||
const char *, int, int *); | |||
__END_DECLS | __END_DECLS | ||