#include <string.h>
#include <stdlib.h>
#include <unistd.h>
+#include <locale.h>
#include "tmalloc.h"
usage() {
puts(
"Usage:\n"
- "memtest [-t TEMPLATENAME]\n"
+ "tmpltest [-t TEMPLATENAME]\n"
);
exit(1);
}
fputs( str, stdout );
}
+static int counter = 0;
+
+static VariableValue
+localCounter(Template tmpl, int nargs, VariableValue *args) {
+ VariableValue out = tmalloc(sizeof(VariableValue));
+
+ out->type = valueInt;
+ out->flags = TND_DEFINED;
+ out->value.intValue = ++counter;
+
+ return out;
+}
+
extern char *optarg;
extern int opterr;
MemoryContext *base;
char *name = NULL;
TemplateData template;
- int i;
+ int i,j,k;
+ int cnt=0;
+ executeFunctionDescData funcs[] = {
+ {"callcounter", 0, localCounter},
+ {NULL,0,NULL}
+ };
+
+
opentlog(TL_OPEN_STDERR,TL_DEBUG, NULL);
opterr=0;
if (!name)
usage();
+ setlocale(LC_ALL,"ru_RU.UTF-8");
base = allocMemoryContext(NULL, MC_DEBUG);
- printf("initTemplate: %d\n", initTemplate(&template, base, ".", name) );
- /* dumpTemplate(&template); */
+ printf("initTemplate: %d\n", initTemplate(&template, base, funcs, ".", name) );
+ /* dumpTemplate(&template); */
setTemplateValueInt(&template, "ID", 17);
setTemplateValueUndefined(&template, "emptyID");
setTemplateValueInt(&template, "zeroid", 0);
+ setTemplateValueString(&template, "str", "QWERTY");
addTemplateRow(&template, "outerLoop");
setTemplateValueString(&template, "outerLoop.data1", "ha1");
template.printString = outfunc;
printTemplate( &template );
+ resetTemplate(&template);
+
+ setTemplateValueInt(&template, "ID", 23);
+ setTemplateValueUndefined(&template, "emptyID");
+ setTemplateValueInt(&template, "zeroid", 0);
+ addTemplateRow(&template, "outerLoop");
+ setTemplateValueString(&template, "outerLoop.data1", "ha1");
+ setTemplateValueInt(&template, "outerLoop.data1", 1234);
+ setTemplateValueString(&template, "outerLoop.data2", "FOO");
+ addTemplateRow(&template, "outerLoop.innerLoop");
+ setTemplateValueString(&template, "outerLoop.innerLoop.camenty", "Again 1");
+
+ for(i=0;i<3;i++) {
+ addTemplateRow(&template,"selfLoop");
+ setTemplateValueInt(&template, "selfLoop.CNT", ++cnt);
+ setTemplateValueString(&template, "selfLoop.NODE", "outer");
+
+ if (i<1) {
+ addTemplateRow(&template,"selfLoop.oneloop");
+ setTemplateValueInt(&template, "selfLoop.oneloop.CNT", ++cnt);
+ setTemplateValueString(&template, "selfLoop.oneloop.NODE", "subloop1");
+ }
+ if (i<2) {
+ addTemplateRow(&template,"selfLoop.oneloop");
+ setTemplateValueInt(&template, "selfLoop.oneloop.CNT", ++cnt);
+ setTemplateValueString(&template, "selfLoop.oneloop.NODE", "subloop2");
+ }
+
+ addTemplateNestedLoop(&template, "selfLoop");
+
+ for(j=0;j<2;j++) {
+ addTemplateRow(&template,"selfLoop");
+ setTemplateValueInt(&template, "selfLoop.CNT", ++cnt);
+ setTemplateValueString(&template, "selfLoop.NODE", "inner");
+ if ( i==1 && j==0 ) {
+ addTemplateRow(&template,"selfLoop.oneloop");
+ setTemplateValueInt(&template, "selfLoop.oneloop.CNT", ++cnt);
+ setTemplateValueString(&template, "selfLoop.oneloop.NODE", "subloop3");
+ }
+ if (i==2 && j==1) {
+ addTemplateNestedLoop(&template, "selfLoop");
+ for(k=0;k<4;k++) {
+ addTemplateRow(&template,"selfLoop");
+ setTemplateValueInt(&template, "selfLoop.CNT", ++cnt);
+ setTemplateValueString(&template, "selfLoop.NODE", "innerst");
+ if ( k==2 ) {
+ addTemplateRow(&template,"selfLoop.oneloop");
+ setTemplateValueInt(&template, "selfLoop.oneloop.CNT", ++cnt);
+ setTemplateValueString(&template, "selfLoop.oneloop.NODE", "subloop4");
+ }
+ }
+ returnTemplateNestedLoop(&template, "selfLoop");
+ }
+ }
+
+
+ returnTemplateNestedLoop(&template, "selfLoop");
+ }
+
+ fputs("================================================\n", stdout);
+ printTemplate( &template );
+
+
resetTemplate(&template);
freeTemplate(&template);
+
return 0;
}