]> git.cameronkatri.com Git - mandoc.git/blob - ml.h
Sx to Sh anchors work.
[mandoc.git] / ml.h
1 /* $Id: ml.h,v 1.15 2008/12/10 12:09:47 kristaps Exp $ */
2 /*
3 * Copyright (c) 2008 Kristaps Dzonsons <kristaps@kth.se>
4 *
5 * Permission to use, copy, modify, and distribute this software for any
6 * purpose with or without fee is hereby granted, provided that the
7 * above copyright notice and this permission notice appear in all
8 * copies.
9 *
10 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
11 * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
12 * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
13 * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
14 * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
15 * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
16 * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
17 * PERFORMANCE OF THIS SOFTWARE.
18 */
19 #ifndef ML_H
20 #define ML_H
21
22 #include "private.h"
23
24 #define COLUMNS 72
25 #define INDENT_SZ 4
26 #define INDENT(x) ((x) > MAXINDENT ? MAXINDENT : (x))
27 #define MAXINDENT 10
28
29 struct md_mlg;
30
31 enum md_ns {
32 MD_NS_BLOCK,
33 MD_NS_HEAD,
34 MD_NS_BODY,
35 MD_NS_INLINE,
36 MD_NS_DEFAULT
37 };
38
39 enum ml_scope {
40 ML_OPEN,
41 ML_CLOSE
42 };
43
44 struct ml_cbs {
45 int (*ml_begin)(struct md_mbuf *,
46 const struct md_args *,
47 const struct tm *,
48 const char *, const char *,
49 enum roffmsec, enum roffvol);
50 int (*ml_end)(struct md_mbuf *,
51 const struct md_args *,
52 const struct tm *,
53 const char *, const char *,
54 enum roffmsec, enum roffvol);
55 ssize_t (*ml_beginstring)(struct md_mbuf *,
56 const struct md_args *,
57 const char *, size_t);
58 ssize_t (*ml_endstring)(struct md_mbuf *,
59 const struct md_args *,
60 const char *, size_t);
61 ssize_t (*ml_endtag)(struct md_mbuf *,
62 void *, const struct md_args *,
63 enum md_ns, int);
64 ssize_t (*ml_begintag)(struct md_mbuf *,
65 void *, const struct md_args *,
66 enum md_ns, int,
67 const int *, const char **);
68 int (*ml_alloc)(void **);
69 void (*ml_free)(void *);
70 };
71
72 __BEGIN_DECLS
73
74 int ml_putstring(struct md_mbuf *,
75 const char *, size_t *);
76 int ml_nputstring(struct md_mbuf *,
77 const char *, size_t, size_t *);
78 int ml_nputs(struct md_mbuf *,
79 const char *, size_t, size_t *);
80 int ml_puts(struct md_mbuf *, const char *, size_t *);
81 int ml_putchars(struct md_mbuf *,
82 char, size_t, size_t *);
83
84 /* FIXME: move into mlg.h or private.h. */
85 struct md_mlg *mlg_alloc(const struct md_args *,
86 const struct md_rbuf *, struct md_mbuf *,
87 const struct ml_cbs *);
88 int mlg_exit(struct md_mlg *, int);
89 int mlg_line(struct md_mlg *, char *);
90
91 int ml_tagput(struct md_mbuf *,
92 enum ml_scope, const char *, size_t *);
93
94 __END_DECLS
95
96 #endif /*!ML_H*/