about summary refs log tree commit diff stats
path: root/gemtext.h
blob: 809e7c6600c1fd12b3b4818af81832312c8208e4 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
#define GEMTEXT_TEXT 1
#define GEMTEXT_LINK 2
#define GEMTEXT_PRE 3
#define GEMTEXT_H1 4
#define GEMTEXT_H2 5
#define GEMTEXT_H3 6
#define GEMTEXT_UL 7
#define GEMTEXT_QT 8

struct gemtext {
	int type;
};

struct gemtext_text {
	int type;
	char *text;
};

struct gemtext_link {
	int type;
	char *name;
	char *link;
};

struct gemtext_pre {
	int type;
	char *text;
};

struct gemtext_h1 {
	int type;
	char *text;
};

struct gemtext_h2 {
	int type;
	char *text;
};

struct gemtext_h3 {
	int type;
	char *text;
};

struct gemtext_ul {
	int type;
	char *text;
};

struct gemtext_qt {
	int type;
	char *text;
};

/* strlcpy.c/strlcat.c */
#undef strlcpy
#undef strlcat
size_t strlcpy(char *, const char *, size_t);
size_t strlcat(char *, const char *, size_t);

/* decode.c */
struct gemtext *gemtext_decode(char *);
struct gemtext *gemtext_decode_fd(int);
struct gemtext *gemtext_decode_file(const char *);
struct gemtext **gemtext_list_decode(char *);
struct gemtext **gemtext_list_decode_fd(int);
struct gemtext **gemtext_list_decode_file(const char *);

/* encode.c */
int gemtext_encode(struct gemtext *, char **, size_t *);
int gemtext_encode_fd(struct gemtext *, int);
int gemtext_encode_file(struct gemtext *, const char *);
int gemtext_list_encode(struct gemtext **, char **, size_t *);
int gemtext_list_encode_fd(struct gemtext **, int);
int gemtext_list_encode_file(struct gemtext **, const char *);

/* html.c */
int gemtext_list_encode_to_html(struct gemtext **, char **, size_t *);
int gemtext_list_encode_to_html_fd(struct gemtext **, int);
int gemtext_list_encode_to_html_file(struct gemtext **, const char *);

/* gemtext.c */
struct gemtext *gemtext_text_new(const char *);
struct gemtext *gemtext_link_new(const char *, const char *);
struct gemtext *gemtext_pre_new(const char *);
struct gemtext *gemtext_h1_new(const char *);
struct gemtext *gemtext_h2_new(const char *);
struct gemtext *gemtext_h3_new(const char *);
struct gemtext *gemtext_ul_new(const char *);
struct gemtext *gemtext_qt_new(const char *);
int gemtext_type(struct gemtext *);
int gemtext_link_has_label(struct gemtext *);
char *gemtext_text_string(struct gemtext *);
char *gemtext_link_link_string(struct gemtext *);
char *gemtext_link_label_string(struct gemtext *);
char *gemtext_pre_string(struct gemtext *);
char *gemtext_h1_string(struct gemtext *);
char *gemtext_h2_string(struct gemtext *);
char *gemtext_h3_string(struct gemtext *);
char *gemtext_ul_string(struct gemtext *);
char *gemtext_qt_string(struct gemtext *);
size_t gemtext_text_strlen(struct gemtext *);
size_t gemtext_link_link_strlen(struct gemtext *);
size_t gemtext_link_label_strlen(struct gemtext *);
size_t gemtext_pre_strlen(struct gemtext *);
size_t gemtext_h1_strlen(struct gemtext *);
size_t gemtext_h2_strlen(struct gemtext *);
size_t gemtext_h3_strlen(struct gemtext *);
size_t gemtext_ul_strlen(struct gemtext *);
size_t gemtext_qt_strlen(struct gemtext *);

/* gemtext_list.c */
struct gemtext **gemtext_list_append(struct gemtext **, struct gemtext *);

/* free.c */
void gemtext_free(struct gemtext *);
void gemtext_list_free(struct gemtext **);