=================================================================== RCS file: /cvs/mandoc/Attic/private.h,v retrieving revision 1.40 retrieving revision 1.41 diff -u -p -r1.40 -r1.41 --- mandoc/Attic/private.h 2008/12/10 14:42:46 1.40 +++ mandoc/Attic/private.h 2008/12/15 01:54:58 1.41 @@ -1,4 +1,4 @@ -/* $Id: private.h,v 1.40 2008/12/10 14:42:46 kristaps Exp $ */ +/* $Id: private.h,v 1.41 2008/12/15 01:54:58 kristaps Exp $ */ /* * Copyright (c) 2008 Kristaps Dzonsons * @@ -19,387 +19,52 @@ #ifndef PRIVATE_H #define PRIVATE_H -#include -#include +#include "mdoc.h" -#include "libmdocml.h" - -struct md_rbuf { - int fd; /* Open descriptor. */ - char *name; /* Name of file. */ - char *buf; /* Buffer. */ - size_t bufsz; /* Size of buffer. */ - size_t line; /* Current line number. */ -#define MD_LINE (BUFSIZ) - char linebuf[MD_LINE]; +struct mdoc { + void *data; + struct mdoc_cb cb; + void *htab; + struct mdoc_node *last; + struct mdoc_node *first; }; -struct md_mbuf { - int fd; /* Open descriptor. */ - char *name; /* Name of file. */ - char *buf; /* Buffer. */ - size_t bufsz; /* Size of buffer. */ - size_t pos; /* Position in buffer. */ +struct mdoc_macro { + int (*fp)(struct mdoc *, int, int, int *, char *); + int flags; +#define MDOC_CALLABLE (1 << 0) +#define MDOC_EXPLICIT (1 << 1) }; -#define ROFFTok_Sp_A 0 -#define ROFFTok_Sp_B 1 -#define ROFFTok_Sp_F 2 -#define ROFFTok_Sp_N 3 -#define ROFFTok_Sp_R 4 -#define ROFFTok_Sp_T 5 -#define ROFFTok_Sp_V 6 -#define ROFFTok_Space 7 -#define ROFFTok_Null 8 -#define ROFFTok_Hyphen 9 -#define ROFFTok_Em 10 -#define ROFFTok_En 11 -#define ROFFTok_Ge 12 -#define ROFFTok_Le 13 -#define ROFFTok_Rquote 14 -#define ROFFTok_Lquote 15 -#define ROFFTok_Uparrow 16 -#define ROFFTok_Acute 17 -#define ROFFTok_Grave 18 -#define ROFFTok_Pi 19 -#define ROFFTok_Ne 20 -#define ROFFTok_Lt 21 -#define ROFFTok_Gt 22 -#define ROFFTok_Plusmin 23 -#define ROFFTok_Infty 24 -#define ROFFTok_Bar 25 -#define ROFFTok_Nan 26 -#define ROFFTok_Quote 27 -#define ROFFTok_Sp_0 28 -#define ROFFTok_Slash 29 -#define ROFFTok_MAX 30 +extern const struct mdoc_macro *const mdoc_macros; -#define ROFF___ 0 -#define ROFF_Dd 1 -#define ROFF_Dt 2 -#define ROFF_Os 3 -#define ROFF_Sh 4 -#define ROFF_Ss 5 -#define ROFF_Pp 6 -#define ROFF_D1 7 -#define ROFF_Dl 8 -#define ROFF_Bd 9 -#define ROFF_Ed 10 -#define ROFF_Bl 11 -#define ROFF_El 12 -#define ROFF_It 13 -#define ROFF_Ad 14 -#define ROFF_An 15 -#define ROFF_Ar 16 -#define ROFF_Cd 17 -#define ROFF_Cm 18 -#define ROFF_Dv 19 -#define ROFF_Er 20 -#define ROFF_Ev 21 -#define ROFF_Ex 22 -#define ROFF_Fa 23 -#define ROFF_Fd 24 -#define ROFF_Fl 25 -#define ROFF_Fn 26 -#define ROFF_Ft 27 -#define ROFF_Ic 28 -#define ROFF_In 29 -#define ROFF_Li 30 -#define ROFF_Nd 31 -#define ROFF_Nm 32 -#define ROFF_Op 33 -#define ROFF_Ot 34 -#define ROFF_Pa 35 -#define ROFF_Rv 36 -#define ROFF_St 37 -#define ROFF_Va 38 -#define ROFF_Vt 39 -#define ROFF_Xr 40 -#define ROFF__A 41 -#define ROFF__B 42 -#define ROFF__D 43 -#define ROFF__I 44 -#define ROFF__J 45 -#define ROFF__N 46 -#define ROFF__O 47 -#define ROFF__P 48 -#define ROFF__R 49 -#define ROFF__T 50 -#define ROFF__V 51 -#define ROFF_Ac 52 -#define ROFF_Ao 53 -#define ROFF_Aq 54 -#define ROFF_At 55 -#define ROFF_Bc 56 -#define ROFF_Bf 57 -#define ROFF_Bo 58 -#define ROFF_Bq 59 -#define ROFF_Bsx 60 -#define ROFF_Bx 61 -#define ROFF_Db 62 -#define ROFF_Dc 63 -#define ROFF_Do 64 -#define ROFF_Dq 65 -#define ROFF_Ec 66 -#define ROFF_Ef 67 -#define ROFF_Em 68 -#define ROFF_Eo 69 -#define ROFF_Fx 70 -#define ROFF_Ms 71 -#define ROFF_No 72 -#define ROFF_Ns 73 -#define ROFF_Nx 74 -#define ROFF_Ox 75 -#define ROFF_Pc 76 -#define ROFF_Pf 77 -#define ROFF_Po 78 -#define ROFF_Pq 79 -#define ROFF_Qc 80 -#define ROFF_Ql 81 -#define ROFF_Qo 82 -#define ROFF_Qq 83 -#define ROFF_Re 84 -#define ROFF_Rs 85 -#define ROFF_Sc 86 -#define ROFF_So 87 -#define ROFF_Sq 88 -#define ROFF_Sm 89 -#define ROFF_Sx 90 -#define ROFF_Sy 91 -#define ROFF_Tn 92 -#define ROFF_Ux 93 -#define ROFF_Xc 94 -#define ROFF_Xo 95 -#define ROFF_Fo 96 -#define ROFF_Fc 97 -#define ROFF_Oo 98 -#define ROFF_Oc 99 -#define ROFF_Bk 100 -#define ROFF_Ek 101 -#define ROFF_Bt 102 -#define ROFF_Hf 103 -#define ROFF_Fr 104 -#define ROFF_Ud 105 -#define ROFF_MAX 106 +__BEGIN_DECLS -#define ROFF_Split 0 -#define ROFF_Nosplit 1 -#define ROFF_Ragged 2 -#define ROFF_Unfilled 3 -#define ROFF_Literal 4 -#define ROFF_File 5 -#define ROFF_Offset 6 -#define ROFF_Bullet 7 -#define ROFF_Dash 8 -#define ROFF_Hyphen 9 -#define ROFF_Item 10 -#define ROFF_Enum 11 -#define ROFF_Tag 12 -#define ROFF_Diag 13 -#define ROFF_Hang 14 -#define ROFF_Ohang 15 -#define ROFF_Inset 16 -#define ROFF_Column 17 -#define ROFF_Width 18 -#define ROFF_Compact 19 -#define ROFF_Std 20 -#define ROFF_p1003_1_88 21 -#define ROFF_p1003_1_90 22 -#define ROFF_p1003_1_96 23 -#define ROFF_p1003_1_2001 24 -#define ROFF_p1003_1_2004 25 -#define ROFF_p1003_1 26 -#define ROFF_p1003_1b 27 -#define ROFF_p1003_1b_93 28 -#define ROFF_p1003_1c_95 29 -#define ROFF_p1003_1g_2000 30 -#define ROFF_p1003_2_92 31 -#define ROFF_p1387_2_95 32 -#define ROFF_p1003_2 33 -#define ROFF_p1387_2 34 -#define ROFF_isoC_90 35 -#define ROFF_isoC_amd1 36 -#define ROFF_isoC_tcor1 37 -#define ROFF_isoC_tcor2 38 -#define ROFF_isoC_99 39 -#define ROFF_ansiC 40 -#define ROFF_ansiC_89 41 -#define ROFF_ansiC_99 42 -#define ROFF_ieee754 43 -#define ROFF_iso8802_3 44 -#define ROFF_xpg3 45 -#define ROFF_xpg4 46 -#define ROFF_xpg4_2 47 -#define ROFF_xpg4_3 48 -#define ROFF_xbd5 49 -#define ROFF_xcu5 50 -#define ROFF_xsh5 51 -#define ROFF_xns5 52 -#define ROFF_xns5_2d2_0 53 -#define ROFF_xcurses4_2 54 -#define ROFF_susv2 55 -#define ROFF_susv3 56 -#define ROFF_svid4 57 -#define ROFF_Filled 58 -#define ROFF_Words 59 -#define ROFF_ARGMAX 60 +int mdoc_err(struct mdoc *, int, int, enum mdoc_err); +int mdoc_warn(struct mdoc *, int, int, enum mdoc_warn); +void mdoc_msg(struct mdoc *, int, const char *, ...); -#define ROFF_MAXLINEARG 32 +int mdoc_macro(struct mdoc *, int, int, int *, char *); +int mdoc_find(const struct mdoc *, const char *); -extern const char *const *toknames; -extern const char *const *tokargnames; +void mdoc_word_alloc(struct mdoc *, int, const char *); +void mdoc_elem_alloc(struct mdoc *, int, int, + size_t, const struct mdoc_arg *, + size_t, const char **); +void mdoc_block_alloc(struct mdoc *, int, int, + size_t, const struct mdoc_arg *); +void mdoc_head_alloc(struct mdoc *, + int, int, size_t, const char **); +void mdoc_body_alloc(struct mdoc *, int, int); -enum roffmsg { - ROFF_WARN, - ROFF_ERROR -}; +void mdoc_node_free(struct mdoc_node *); -enum roffmsec { - ROFF_MSEC_1, - ROFF_MSEC_2, - ROFF_MSEC_3, - ROFF_MSEC_3p, - ROFF_MSEC_4, - ROFF_MSEC_5, - ROFF_MSEC_6, - ROFF_MSEC_7, - ROFF_MSEC_8, - ROFF_MSEC_9, - ROFF_MSEC_UNASS, - ROFF_MSEC_DRAFT, - ROFF_MSEC_PAPER, - ROFF_MSEC_MAX -}; +void mdoc_sibling(struct mdoc *, int, struct mdoc_node **, + struct mdoc_node **, struct mdoc_node *); -enum roffatt { - ROFF_ATT_V1, - ROFF_ATT_V2, - ROFF_ATT_V3, - ROFF_ATT_V6, - ROFF_ATT_V7, - ROFF_ATT_32V, - ROFF_ATT_V_1, - ROFF_ATT_V_4, - ROFF_ATT_MAX -}; - -enum roffvol { - ROFF_VOL_NONE, - ROFF_VOL_AMD, - ROFF_VOL_IND, - ROFF_VOL_KM, - ROFF_VOL_LOCAL, - ROFF_VOL_PRM, - ROFF_VOL_PS1, - ROFF_VOL_SMM, - ROFF_VOL_URM, - ROFF_VOL_USD, -#define ROFF_ARCH_START ROFF_ARCH_ALPHA - ROFF_ARCH_ALPHA, - ROFF_ARCH_AMD64, - ROFF_ARCH_AMIGA, - ROFF_ARCH_ARC, - ROFF_ARCH_ARMISH, - ROFF_ARCH_AVIION, - ROFF_ARCH_HP300, - ROFF_ARCH_HPPA, - ROFF_ARCH_HPPA64, - ROFF_ARCH_I386, - ROFF_ARCH_LANDISK, - ROFF_ARCH_LUNA88K, - ROFF_ARCH_MAC68K, - ROFF_ARCH_MACPPC, - ROFF_ARCH_MVME68K, - ROFF_ARCH_MVME88K, - ROFF_ARCH_MVMEPPC, - ROFF_ARCH_PMAX, - ROFF_ARCH_SGI, - ROFF_ARCH_SPARC, - ROFF_ARCH_SPARC64, - ROFF_ARCH_SUN3, - ROFF_ARCH_VAX, - ROFF_ARCH_ZAURUS, - ROFF_VOL_MAX -}; - -#define ROFFSec_NMASK (0x07) - -#define ROFFSec_PR_Os (1 << 1) -#define ROFFSec_PR_Dt (1 << 2) -#define ROFFSec_PR_Dd (1 << 3) -#define ROFFSec_NAME (1 << 4) -#define ROFFSec_SYNOP (1 << 5) -#define ROFFSec_DESC (1 << 6) -#define ROFFSec_RETVAL (1 << 7) -#define ROFFSec_ENV (1 << 8) -#define ROFFSec_FILES (1 << 9) -#define ROFFSec_EX (1 << 10) -#define ROFFSec_DIAG (1 << 11) -#define ROFFSec_ERRS (1 << 12) -#define ROFFSec_SEEALSO (1 << 13) -#define ROFFSec_STAND (1 << 14) -#define ROFFSec_HIST (1 << 15) -#define ROFFSec_AUTH (1 << 16) -#define ROFFSec_CAVEATS (1 << 17) -#define ROFFSec_BUGS (1 << 18) -#define ROFFSec_OTHER (1 << 19) - -struct roffcb { - int (*roffmsg)(void *, enum roffmsg, - const char *, const char *, const char *); - int (*roffhead)(void *, const struct tm *, const char *, - const char *, enum roffmsec, enum roffvol); - int (*rofftail)(void *, const struct tm *, const char *, - const char *, enum roffmsec, enum roffvol); - int (*roffdata)(void *, int, const char *, const char *); - int (*roffin)(void *, int, int *, const char **); - int (*roffout)(void *, int); - int (*roffblkin)(void *, int, int *, const char **); - int (*roffblkout)(void *, int); - int (*roffblkheadin)(void *, int, int *, const char **); - int (*roffblkheadout)(void *, int); - int (*roffblkbodyin)(void *, int, int *, const char **); - int (*roffblkbodyout)(void *, int); - int (*roffspecial)(void *, int, const char *, - const int *, const char **, const char **); -}; - -struct rofftree; - -__BEGIN_DECLS - -typedef void (*(*md_init)(const struct md_args *, - struct md_mbuf *, const struct md_rbuf *)); -typedef int (*md_line)(void *, char *); -typedef int (*md_exit)(void *, int); -void *md_init_html(const struct md_args *, - struct md_mbuf *, const struct md_rbuf *); -int md_line_html(void *, char *); -int md_exit_html(void *, int); -void *md_init_noop(const struct md_args *, - struct md_mbuf *, const struct md_rbuf *); -int md_line_noop(void *, char *); -int md_exit_noop(void *, int); -void *md_init_xml(const struct md_args *, - struct md_mbuf *, const struct md_rbuf *); -int md_line_xml(void *, char *); -int md_exit_xml(void *, int); -int md_buf_puts(struct md_mbuf *, const char *, size_t); -int md_buf_putchar(struct md_mbuf *, char); -int md_buf_putstring(struct md_mbuf *, const char *); -struct rofftree *roff_alloc(const struct roffcb *, void *); -int roff_engine(struct rofftree *, char *); -int roff_free(struct rofftree *, int); -int rofftok_scan(const char *, int *); -char *roff_literal(int, const int *, - const char **, const char **); -char *roff_fmtstring(int); -char *roff_msecname(enum roffmsec); -enum roffmsec roff_msec(const char *); -int roff_sec(const char **); -enum roffatt roff_att(const char *); -enum roffvol roff_vol(const char *); -char *roff_volname(enum roffvol); +void *mdoc_hash_alloc(void); +int mdoc_hash_find(const void *, const char *); +void mdoc_hash_free(void *); __END_DECLS