#include "EXTERN.h"
#include "perl.h"
#include "XSUB.h"
#include "template.h"
#include "perl_tags.h"
MODULE = Text::Tmpl PACKAGE = Text::Tmpl PREFIX = template_
PROTOTYPES: ENABLE
context_p
template_init()
int
template_set_delimiters(opentag, closetag)
char * opentag
char * closetag
int
template_set_debug(ctx, debug_level)
context_p ctx
int debug_level
int
template_set_strip(ctx, strip)
context_p ctx
int strip
int
template_set_dir(ctx, directory)
context_p ctx
char * directory
int
template_set_value(ctx, name, value)
context_p ctx
char * name
char * value
void
template_destroy(ctx)
context_p ctx
context_p
template_loop_iteration(ctx, loop_name)
context_p ctx
SV * loop_name
PREINIT:
char *r_loop_name = NULL;
INIT:
if (loop_name == &sv_undef) {
XSRETURN_UNDEF;
}
r_loop_name = (char *)SvPV(loop_name, na);
CODE:
RETVAL = template_loop_iteration(ctx, r_loop_name);
OUTPUT:
RETVAL
SV *
template_parse_file(ctx, template_filename)
context_p ctx
SV * template_filename
PREINIT:
char *output = NULL;
char *r_template_filename = NULL;
INIT:
if (template_filename == &sv_undef) {
XSRETURN_UNDEF;
}
r_template_filename = (char *)SvPV(template_filename, na);
CODE:
template_parse_file(ctx, r_template_filename, &output);
if (output != NULL) {
RETVAL = newSVpv(output, strlen(output));
free(output);
} else {
XSRETURN_UNDEF;
}
OUTPUT:
RETVAL
SV *
template_parse_string(ctx, template)
context_p ctx
SV * template
PREINIT:
char *output = NULL;
char *r_template = NULL;
INIT:
if (template == &sv_undef) {
XSRETURN_UNDEF;
}
r_template = (char *)SvPV(template, na);
CODE:
template_parse_string(ctx, r_template, &output);
if (output != NULL) {
RETVAL = newSVpv(output, strlen(output));
free(output);
} else {
XSRETURN_UNDEF;
}
OUTPUT:
RETVAL
int
template_register_simple(name, code)
char * name
CV * code
PREINIT:
HV *perl_simple_tags = perl_get_hv(PERL_TAGS_SIMPLE_TAG_HASH,
TRUE);
CODE:
hv_store(perl_simple_tags, name, strlen(name),
newRV((SV*)code), 0);
RETVAL = template_register_simple(name, perl_simple_tag);
OUTPUT:
RETVAL
int
template_register_pair(named_context, open_name, close_name, code)
int named_context
char * open_name
char * close_name
CV * code
PREINIT:
HV *perl_tag_pairs = perl_get_hv(PERL_TAGS_TAG_PAIR_HASH,
TRUE);
CODE:
hv_store(perl_tag_pairs, open_name,
strlen(open_name), newRV((SV*)code), 0);
RETVAL = template_register_pair((char)named_context,
open_name, close_name,
perl_tag_pair);
OUTPUT:
RETVAL
context_p
context_get_anonymous_child(ctx)
context_p ctx
context_p
context_get_named_child(ctx, name)
context_p ctx
char * name
int
context_set_named_child(ctx, name)
context_p ctx
char * name
context_p
context_add_peer(ctx)
context_p ctx
void *
context_output_contents(ctx, output_contents)
context_p ctx
int output_contents
CODE:
context_output_contents(ctx, (char)output_contents);