aboutsummaryrefslogtreecommitdiff
path: root/src/ctemplates.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/ctemplates.h')
-rw-r--r--src/ctemplates.h13
1 files changed, 11 insertions, 2 deletions
diff --git a/src/ctemplates.h b/src/ctemplates.h
index eafabac..8bf567d 100644
--- a/src/ctemplates.h
+++ b/src/ctemplates.h
@@ -35,6 +35,7 @@ typedef struct TMPL_fmtlists TMPL_fmtlists;
#define ATTRIBUTE_VARNAME "name"
#define ATTRIBUTE_DEFAULT "default"
#define ATTRIBUTE_VALUE "value"
+#define ATTRIBUTE_LEVEL "level"
#define ERRBUF_HINTLEN 50
@@ -55,6 +56,7 @@ typedef struct TMPL_fmtlists TMPL_fmtlists;
#define ATTRIBUTE_VARNAME_LENGTH SIZEOF(ATTRIBUTE_VARNAME) - 1
#define ATTRIBUTE_DEFAULT_LENGTH SIZEOF(ATTRIBUTE_DEFAULT) - 1
#define ATTRIBUTE_VALUE_LENGTH SIZEOF(ATTRIBUTE_VALUE) - 1
+#define ATTRIBUTE_LEVEL_LENGTH SIZEOF(ATTRIBUTE_LEVEL) - 1
//Define to 0 for slight speedup improvements, no errors
#define DEBUGGING 1
@@ -86,17 +88,21 @@ enum TMPL_vartype{
vartype_var
};
+struct TMPL_varlist TMPL_varlist;
+struct TMPL_loop TMPL_loop;
struct TMPL_varlist{
map_t map;
+ struct TMPL_loop* parent;
}TMPL_varlist;
struct TMPL_loop{
struct TMPL_varlist* varlist;
+ struct TMPL_varlist* parent;
size_t loop_len;
struct TMPL_loop* next;
struct TMPL_loop* tail;
-};
+}TMPL_loop;
struct TMPL_varitem{
enum TMPL_vartype type;
@@ -110,6 +116,7 @@ struct TMPL_varitem{
struct TMPL_tagnode{
enum TMPL_tagtype type;
struct TMPL_tagnode* next;
+ struct TMPL_tagnode* parent;
unsigned int line;
unsigned int character;
union{
@@ -142,7 +149,8 @@ struct TMPL_tagnode{
/*Break and Continue*/
struct{
- int level;
+ int level;//Just use next as the next value
+ struct TMPL_tagnode* into;
}breakcont;
}TMPL_tag;
}TMPL_tagnode;
@@ -178,6 +186,7 @@ struct TMPL_token{
struct TMPL_token* last;//The last token
unsigned int line;// Not used currently
unsigned int character;// Not used currently
+ struct TMPL_tagnode* into;//The tag node this item became
}TMPL_token;
int TMPL_add_var_to_varlist(struct TMPL_varlist* vl, const char* name, const char* value);