blob: a8855a8b6a565420f5eaddb574c9be909a9628cd (
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
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
|
/*
* C TemplateS Library 0.1 -
* Forked from C Template Library 1.0 by Stephen C. Losen.
*
* Copyright 2017 Alexander M. Pickering Distributed under the terms
* of the GNU General Public License (GPL)
*/
#ifndef _CTEMPLATE_H
#define _CTEMPLATE_H
#define MAX_TEMPLATE_LENGTH 2147384647
#define ERRBUF_HINTLEN 50
//Length of error messages
#define ERR_MSG_LEN 500
struct TMPL_varlist{
map_t map;
}TMPL_varlist;
struct TMPL_loop{
struct TMPL_varlist* varlist;
size_t loop_len;
struct TMPL_loop* next;
struct TMPL_loop* tail;
};
/* Holdes all the data needed for a template*/
struct TMPL_templates{
struct TMPL_buf* out;
struct TMPL_buf* errout;
struct TMPL_tagnode* roottag;
int linenum;
int error;
} TMPL_templates;
void TMPL_add_var_to_varlist(struct TMPL_varlist* vl, char* name, char* value);
void TMPL_add_loop_to_varlist(struct TMPL_varlist* vl, char* name, struct TMPL_loop* loop);
void TMPL_add_varlist_to_loop(struct TMPL_loop* l, struct TMPL_varlist* vl);
struct TMPL_varlist* TMPL_alloc_varlist(void);
void TMPL_free_varlist(struct TMPL_varlist* t);
struct TMPL_templates* TMPL_alloc_template(char* t);
void TMPL_free_template(struct TMPL_templates* t);
struct TMPL_loop* TMPL_alloc_loop(void);
void TMPL_free_loop(struct TMPL_loop* tl);
char* TMPL_render(struct TMPL_templates* t, struct TMPL_varlist* varlist, size_t* size_p);
/*A debug function*/
void print_varlist(struct TMPL_varlist* vl);
void print_ast(struct TMPL_templates* root);
#endif
|