aboutsummaryrefslogtreecommitdiff
path: root/src/ctemplates.h
diff options
context:
space:
mode:
authorAlexander Pickering <alexandermpickering@gmail.com>2019-02-19 16:02:41 -0500
committerAlexander Pickering <alexandermpickering@gmail.com>2019-02-19 16:02:41 -0500
commit98e35971a63cdd9bab5dd63a941c57d0bd8de91e (patch)
tree0df6695325eea1fba340d6e9223e4f60d90687aa /src/ctemplates.h
parenta8ca001a8f811403bccffed03243954f5a52b27b (diff)
downloadlibctemplates-98e35971a63cdd9bab5dd63a941c57d0bd8de91e.tar.gz
libctemplates-98e35971a63cdd9bab5dd63a941c57d0bd8de91e.tar.bz2
libctemplates-98e35971a63cdd9bab5dd63a941c57d0bd8de91e.zip
Added break statement
Added a break statement that can break out of loops.
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);