From 98e35971a63cdd9bab5dd63a941c57d0bd8de91e Mon Sep 17 00:00:00 2001 From: Alexander Pickering Date: Tue, 19 Feb 2019 16:02:41 -0500 Subject: Added break statement Added a break statement that can break out of loops. --- src/ctemplates.h | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) (limited to 'src/ctemplates.h') 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); -- cgit v1.2.3-70-g09d2