summaryrefslogtreecommitdiff
path: root/package/gettext-tiny/src/src/poparser.h
blob: e29594f355e62082ce3581dd3e1f3c7da96be27a (plain)
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
#ifndef POPARSER_H
#define POPARSER_H
#include <unistd.h>

enum po_entry {
	pe_msgid = 0,
	pe_msgstr,
	pe_maxstr,
	pe_str = pe_maxstr,
	pe_invalid,
	pe_max,
};

struct po_info {
	enum po_entry type;
	char *text;
	size_t textlen;
};

typedef int (*poparser_callback)(struct po_info* info, void* user);

struct po_parser {
	struct po_info info;
	char *buf;
	size_t bufsize;
	enum po_entry prev_type;
	unsigned curr_len;
	poparser_callback cb;
	void *cbdata;
};

void poparser_init(struct po_parser *p, char* workbuf, size_t bufsize, poparser_callback cb, void* cbdata);
int poparser_feed_line(struct po_parser *p, char* line, size_t buflen);
int poparser_finish(struct po_parser *p);

#endif