#ifndef __TEMPLATE_CC_H #define __TEMPLATE_CC_H #ifdef __cplusplus #include #include class tmpl { public: // this is our basic constructor tmpl() : t(template_init()), is_destroyable(1) { } // this constructor is used to make a context into a template object tmpl(context_p ctx) : t(ctx), is_destroyable(0) { } // destructor does nothing unless is_destroyable == 1 ~tmpl() { if (is_destroyable) { template_destroy(t); t = NULL; } } // operator for casting to context_p operator context_p() { return t; } int set_delimiters(char *opentag, char *closetag) { return template_set_delimiters(t, opentag, closetag); } int register_simple(char *name, void (*function)(context_p, char **, int, char**)) { return template_register_simple(t, name, function); } int alias_simple(char *old_name, char *new_name) { return template_alias_simple(t, old_name, new_name); } int register_pair(char named_context, char *open_name, char *close_name, void (*function)(context_p, int, char**)) { return template_register_pair(t, named_context, open_name, close_name, function); } int alias_pair(char *old_open_name, char *old_close_name, char *new_open_name, char *new_close_name) { return template_alias_pair(t, old_open_name, old_close_name, new_open_name, new_close_name); } void remove_simple(char *name) { template_remove_simple(t, name); } void remove_pair(char *open_name) { template_remove_pair(t, open_name); } void set_debug(int debug_level) { template_set_debug(t, debug_level); } void set_strip(int strip) { template_set_strip(t, strip); } int set_dir(char *directory) { return template_set_dir(t, directory); } int set_value(char *name, char *value) { return template_set_value(t, name, value); } tmpl loop_iteration(char *loop_name) { return (tmpl)template_loop_iteration(t, loop_name); } tmpl fetch_loop_iteration(char *loop_name, int iteration) { return (tmpl)template_fetch_loop_iteration(t, loop_name, iteration); } int parse_string(char *tmpl, char **output) { return template_parse_string(t, tmpl, output); } int parse_file(char *template_filename, char **output) { return template_parse_file(t, template_filename, output); } protected: context_p t; unsigned char is_destroyable; }; #endif /* __cplusplus */ #endif /* __TEMPLATE_CC_H */