Static template generator for C
git clone git://soophie.de/ductape
11
http_request_t *request;12
char *title;13
ctl_fn_t fn;14
void *data;15
};17
void ctl_init(ctl_fn_t fn);17
http_response_t ctl_serve_page(http_request_t *request, const char *title, ctl_fn_t fn);18
http_response_t ctl_serve_component(http_request_t *request, ctl_fn_t fn);18
http_response_t ctl_serve_page(http_request_t *request, const char *title, ctl_fn_t fn, void *data);19
http_response_t ctl_serve_component(http_request_t *request, ctl_fn_t fn, void *data);21
#ifdef LIB_CTL_IMPL
26
ctl_fn = fn;27
}28
http_response_t ctl_serve_page(http_request_t *request, const char *title, ctl_fn_t fn) {29
http_response_t ctl_serve_page(http_request_t *request, const char *title, ctl_fn_t fn, void *data) {30
char *html = NULL;31
ctl_ctx_t ctx = {32
.request = request,33
.title = title,34
.fn = fn,35
.data = data,36
};37
ctl_fn(&html, ctx);38
http_response_t response = http_response_create(HTTP_STATUS_OK);
42
return response;43
}43
http_response_t ctl_serve_component(http_request_t *request, ctl_fn_t fn) {45
http_response_t ctl_serve_component(http_request_t *request, ctl_fn_t fn, void *data) {46
char *html = NULL;47
ctl_ctx_t ctx = {48
.request = request,49
.data = data,50
};51
fn(&html, ctx);52
http_response_t response = http_response_create(HTTP_STATUS_OK);