diff options
| author | Alexander Pickering <alexandermpickering@gmail.com> | 2018-11-07 18:25:36 -0500 |
|---|---|---|
| committer | Alexander Pickering <alexandermpickering@gmail.com> | 2018-11-07 18:25:36 -0500 |
| commit | a1e4097ce8a417c8b6b6011b0c2deb113c0417f2 (patch) | |
| tree | 9e500354e48dac5ffcbc7352400e9508d033d9d0 /src | |
| parent | b9899c6cbe2f694c9db36e9d4e15c532d10b546f (diff) | |
| download | libctemplates-a1e4097ce8a417c8b6b6011b0c2deb113c0417f2.tar.gz libctemplates-a1e4097ce8a417c8b6b6011b0c2deb113c0417f2.tar.bz2 libctemplates-a1e4097ce8a417c8b6b6011b0c2deb113c0417f2.zip | |
Added const to most chars
Added const qualifier for clarity.
Diffstat (limited to 'src')
| -rw-r--r-- | src/ctemplates.c | 105 | ||||
| -rw-r--r-- | src/ctemplates.h | 12 | ||||
| -rw-r--r-- | src/fbuf.c | 4 | ||||
| -rw-r--r-- | src/fbuf.h | 4 | ||||
| -rw-r--r-- | src/kmp.c | 4 | ||||
| -rw-r--r-- | src/kmp.h | 4 |
6 files changed, 66 insertions, 67 deletions
diff --git a/src/ctemplates.c b/src/ctemplates.c index c154dcb..1de9b64 100644 --- a/src/ctemplates.c +++ b/src/ctemplates.c @@ -34,34 +34,34 @@ struct TMPL_token* TMPL_alloc_token(void); void TMPL_free_token(struct TMPL_token* token); -enum TMPL_tagtype starts_with_token(char* str, size_t strlen); +enum TMPL_tagtype starts_with_token(const char* str, size_t strlen); size_t tagtype_len(enum TMPL_tagtype t); struct TMPL_token* scan_text( - char* start, + const char* start, size_t strlen, size_t* consumed ); struct TMPL_token* scan_tag( - char* start, + const char* start, size_t strlen, size_t* consumed ); void print_tokens(struct TMPL_token* head); struct TMPL_varitem* TMPL_alloc_varitem(void); void TMPL_free_varitem(struct TMPL_varitem* vi); -void TMPL_add_var_to_varlist( +int TMPL_add_var_to_varlist( struct TMPL_varlist* t, - char* varname, - char* var + const char* varname, + const char* var ); void print_ast_helper( struct TMPL_tagnode* cursor, int level ); void print_ast(struct TMPL_templates* root); -struct TMPL_token* TMPL_tokenize(char* tmplstr, size_t strlen); +struct TMPL_token* TMPL_tokenize(const char* tmplstr, size_t strlen); struct TMPL_tagnode* alloc_tagnode(void); -size_t get_quoted_string(char* start, size_t len); +size_t get_quoted_string(const char* start, size_t len); int is_whitespace(char c); struct TMPL_tagnode* parse_text( struct TMPL_token* head, @@ -92,13 +92,13 @@ int TMPL_free_hashmapitems(any_t a, any_t b); void TMPL_free_varlist(struct TMPL_varlist* vl); struct TMPL_loop* TMPL_alloc_loop(void); void TMPL_free_loop(struct TMPL_loop* tl); -void TMPL_add_varlist_to_loop( +int TMPL_add_varlist_to_loop( struct TMPL_loop* tl, struct TMPL_varlist* vl ); -void TMPL_add_loop_to_varlist( +int TMPL_add_loop_to_varlist( struct TMPL_varlist* vl, - char* name, + const char* name, struct TMPL_loop* l ); struct TMPL_tagnode* parse( @@ -106,7 +106,7 @@ struct TMPL_tagnode* parse( struct TMPL_buf* errbuf ); struct TMPL_templates* alloc_templates(void); -struct TMPL_templates* compile(char* tmplstr); +struct TMPL_templates* compile(const char* tmplstr); int render_variable( struct TMPL_templates* t, struct TMPL_tagnode* node, @@ -147,7 +147,7 @@ char* TMPL_render( struct TMPL_varlist* varlist, size_t* size_p ); -struct TMPL_templates* TMPL_alloc_template(char* tmplstr); +struct TMPL_templates* TMPL_alloc_template(const char* tmplstr); void TMPL_free_template(struct TMPL_templates* t); void TMPL_free_tagnode(struct TMPL_tagnode* tn); char* TMPL_get_error(struct TMPL_templates* t); @@ -178,7 +178,7 @@ TMPL_free_token(struct TMPL_token* token){ /*Check if it starts with the names of any of our tokens*/ enum TMPL_tagtype -starts_with_token(char* str, size_t strlen){ +starts_with_token(const char* str, size_t strlen){ /*Make sure we get TMPL_ first*/ if(strlen < 5){ return tag_null; @@ -282,14 +282,14 @@ tagtype_len(enum TMPL_tagtype t){ /*Quickly find the token*/ struct TMPL_token* -scan_text(char* start, size_t strlen, size_t* consumed){ +scan_text(const char* start, size_t strlen, size_t* consumed){ struct TMPL_token* t = TMPL_alloc_token(); t->start = start; enum TMPL_tagtype type = tag_null; - char* cursor = start; + const char* cursor = start; while(type == tag_null){ int left = strlen - (cursor - start); - cursor = (char*)memchr(cursor,'<',left); + cursor = (const char*)memchr(cursor,'<',left); if(cursor == NULL){ cursor = start + (strlen > 0 ? strlen : 1); break; @@ -302,14 +302,11 @@ scan_text(char* start, size_t strlen, size_t* consumed){ t->end = cursor; t->length = t->end - t->start; *consumed = t->length; - char* c; - for(c = start; c < cursor; c++){ - } return t; } struct TMPL_token* -scan_tag(char* start, size_t strlen, size_t* consumed){ +scan_tag(const char* start, size_t strlen, size_t* consumed){ struct TMPL_token* t = TMPL_alloc_token(); t->start = start; char* cursor = (char*)memchr(start,'>',strlen); @@ -324,7 +321,7 @@ print_tokens(struct TMPL_token* head){ struct TMPL_token* cursor = head; while(cursor != NULL){ printf("char start is %p char end is %p cursor is %p type is %d\n",cursor->start, cursor->end,(void*)cursor,(int)cursor->type); - char* i; + const char* i; for(i = cursor->start; i != cursor->end; i++){ printf("%c",*i); } @@ -350,18 +347,18 @@ TMPL_free_varitem(struct TMPL_varitem* vi){ free(vi); } -void -TMPL_add_var_to_varlist(struct TMPL_varlist* t, char* varname, char* var){ +/* Adds a variable to the variable list, returns -1 on error*/ +int +TMPL_add_var_to_varlist(struct TMPL_varlist* t, const char* varname, const char* var){ struct TMPL_varitem* vi = TMPL_alloc_varitem(); vi->type = vartype_var; size_t slen = strlen(var);/*strlen dosn't count \0*/ - vi->item.s = (char*)malloc(sizeof(char)*(slen + 1)); + vi->item.s = (char*)malloc(sizeof(char)*(slen + 1));/*+1 for \0*/ vi->item.s[slen] = '\0'; memcpy(vi->item.s,var,slen); - int succ = hashmap_put(t->map,varname,vi); - if(succ != MAP_OK){ - exit(-1); - } + int succ = hashmap_put(t->map,(char*)varname,(char*)vi); + if(succ != MAP_OK) return 0; + return -1; } void @@ -430,10 +427,10 @@ print_ast(struct TMPL_templates* t){ } struct TMPL_token* -TMPL_tokenize(char* tmplstr, size_t m_strlen){ +TMPL_tokenize(const char* tmplstr, size_t m_strlen){ if(m_strlen == 0) return NULL; struct TMPL_token* first; - char* textcursor = tmplstr; + const char* textcursor = tmplstr; size_t newlength; enum TMPL_tagtype ttype; ttype = starts_with_token(tmplstr+1,m_strlen); @@ -475,7 +472,7 @@ alloc_tagnode(){ /*Finds a quoted string, allows for \"*/ size_t -get_quoted_string(char* start, size_t len){ +get_quoted_string(const char* start, size_t len){ size_t i; int setup = 0; for(i = 0; i < len; i++){ @@ -519,9 +516,9 @@ parse_else(struct TMPL_token* head, struct TMPL_buf* errbuf){ struct TMPL_tagnode* parse_elseif(struct TMPL_token* head, struct TMPL_buf* errbuf){ struct TMPL_tagnode* t = alloc_tagnode(); - char* start_of_attribs = head->start + TAG_ELSEIF_LENGTH; + const char* start_of_attribs = head->start + TAG_ELSEIF_LENGTH; int name_offset = kmp(start_of_attribs,head->length, ATTRIBUTE_VARNAME,ATTRIBUTE_VARNAME_LENGTH); - char* start_of_name = start_of_attribs + name_offset + ATTRIBUTE_VARNAME_LENGTH; + const char* start_of_name = start_of_attribs + name_offset + ATTRIBUTE_VARNAME_LENGTH; while(is_whitespace(*start_of_name)) start_of_name++; if(*start_of_name != '='){ @@ -544,7 +541,7 @@ parse_elseif(struct TMPL_token* head, struct TMPL_buf* errbuf){ if(testval_offset == -1){ t->TMPL_tag.ifelse.testval = NULL; }else{ - char* start_of_value = start_of_attribs + testval_offset + ATTRIBUTE_VALUE_LENGTH; + const char* start_of_value = start_of_attribs + testval_offset + ATTRIBUTE_VALUE_LENGTH; while(is_whitespace(*start_of_value)) start_of_value++; if(*start_of_value != '='){ @@ -604,10 +601,10 @@ parse_elseif(struct TMPL_token* head, struct TMPL_buf* errbuf){ struct TMPL_tagnode* parse_if(struct TMPL_token* head, struct TMPL_buf* errbuf){ struct TMPL_tagnode* t = alloc_tagnode(); - char* start_of_attribs = head->start + TAG_IF_LENGTH; + const char* start_of_attribs = head->start + TAG_IF_LENGTH; /*Find the name of the varialbe*/ int name_offset = kmp(start_of_attribs,head->length,ATTRIBUTE_VARNAME,ATTRIBUTE_VARNAME_LENGTH); - char* start_of_name = start_of_attribs + name_offset + ATTRIBUTE_VARNAME_LENGTH; + const char* start_of_name = start_of_attribs + name_offset + ATTRIBUTE_VARNAME_LENGTH; while(is_whitespace(*start_of_name)) start_of_name++; if(*start_of_name != '='){ @@ -630,7 +627,7 @@ parse_if(struct TMPL_token* head, struct TMPL_buf* errbuf){ if(testval_offset == -1){ t->TMPL_tag.ifelse.testval = NULL; }else{ - char* start_of_value = start_of_attribs + testval_offset + ATTRIBUTE_VALUE_LENGTH; + const char* start_of_value = start_of_attribs + testval_offset + ATTRIBUTE_VALUE_LENGTH; while(is_whitespace(*start_of_value)) start_of_value++; if(*start_of_value != '='){ @@ -692,7 +689,7 @@ parse_if(struct TMPL_token* head, struct TMPL_buf* errbuf){ struct TMPL_tagnode* parse_loop(struct TMPL_token* head, struct TMPL_buf* errbuf){ struct TMPL_tagnode* t = alloc_tagnode(); - char* loop_start = head->start + TAG_LOOP_LENGTH; + const char* loop_start = head->start + TAG_LOOP_LENGTH; int loop_length = head->length - TAG_LOOP_LENGTH; int name_offset = kmp(loop_start,loop_length, ATTRIBUTE_VARNAME, ATTRIBUTE_VARNAME_LENGTH); if(name_offset == -1 && DEBUGGING){ @@ -701,7 +698,7 @@ parse_loop(struct TMPL_token* head, struct TMPL_buf* errbuf){ return NULL; } if(name_offset >= 0){ - char* start_of_name = loop_start + name_offset + ATTRIBUTE_VARNAME_LENGTH; + const char* start_of_name = loop_start + name_offset + ATTRIBUTE_VARNAME_LENGTH; while(is_whitespace(*start_of_name)) start_of_name++; if(*start_of_name != '='){ @@ -754,7 +751,7 @@ parse_variable(struct TMPL_token* head, struct TMPL_buf* errbuf){ struct TMPL_tagnode* t = alloc_tagnode(); /*<TMPL_VAR name="..." default="..."> ^*/ - char* start_of_attribs = head->start + TAG_VAR_LENGTH; + const char* start_of_attribs = head->start + TAG_VAR_LENGTH; /*Find the length of attributes*/ int attribs_length = head->length - TAG_VAR_LENGTH; /*Find where the "name" attribute is*/ @@ -767,7 +764,7 @@ parse_variable(struct TMPL_token* head, struct TMPL_buf* errbuf){ bputs(errbuf,"\n"); } if(in_name >= 0){ - char* start_of_name = start_of_attribs + in_name + ATTRIBUTE_VARNAME_LENGTH; + const char* start_of_name = start_of_attribs + in_name + ATTRIBUTE_VARNAME_LENGTH; while(is_whitespace(*start_of_name)) start_of_name++; if(*start_of_name != '='){ @@ -788,7 +785,7 @@ parse_variable(struct TMPL_token* head, struct TMPL_buf* errbuf){ t->TMPL_tag.var.name_len = name_size; } if(in_default >= 0){ - char* start_of_default = start_of_attribs + in_default + ATTRIBUTE_DEFAULT_LENGTH; + const char* start_of_default = start_of_attribs + in_default + ATTRIBUTE_DEFAULT_LENGTH; while(is_whitespace(*start_of_default)) start_of_default++; if(*start_of_default != '='){ @@ -840,6 +837,7 @@ TMPL_free_varlist(struct TMPL_varlist* vl){ struct TMPL_loop* TMPL_alloc_loop(){ struct TMPL_loop* ret = (struct TMPL_loop*)malloc(sizeof(struct TMPL_loop)); + if(ret == NULL) return NULL; ret->loop_len = 0; ret->varlist = NULL; ret->next = NULL; @@ -857,29 +855,30 @@ TMPL_free_loop(struct TMPL_loop* tl){ free(tl); } -void TMPL_add_varlist_to_loop(struct TMPL_loop* tl,struct TMPL_varlist* vl){ +int TMPL_add_varlist_to_loop(struct TMPL_loop* tl,struct TMPL_varlist* vl){ if(tl->loop_len == 0){/*Add the first node*/ tl->varlist = vl; tl->tail = tl; tl->loop_len++; }else{ struct TMPL_loop* new = TMPL_alloc_loop(); + if(new == NULL) return -1; new->varlist = vl; tl->tail->next = new; tl->tail = new; } + return 0; } -void -TMPL_add_loop_to_varlist(struct TMPL_varlist* vl, char* name, struct TMPL_loop* l){ +/*Returns 0 for "OK" or -1 for "out of memory"*/ +int +TMPL_add_loop_to_varlist(struct TMPL_varlist* vl, const char* name, struct TMPL_loop* l){ struct TMPL_varitem* vi = TMPL_alloc_varitem(); vi->type = vartype_loop; vi->item.l = l; - int err = hashmap_put(vl->map,name,vi); - if(err != MAP_OK){ - } - struct TMPL_varitem* back; - hashmap_get(vl->map,name,(void**)&back); + int err = hashmap_put(vl->map,(char*)name,vi); + if(err == MAP_OK) return 0; + return -1; } @@ -930,7 +929,7 @@ alloc_templates(){ } struct TMPL_templates* -compile(char* tmplstr){ +compile(const char* tmplstr){ size_t slen = strlen(tmplstr); struct TMPL_templates* ret = alloc_templates(); ret->out = alloc_tmpl_buf(); @@ -1161,7 +1160,7 @@ TMPL_render(struct TMPL_templates* t, struct TMPL_varlist* varlist, size_t* size } struct TMPL_templates* -TMPL_alloc_template(char* tmplstr){ +TMPL_alloc_template(const char* tmplstr){ struct TMPL_templates* n = compile(tmplstr); if(n != NULL){ diff --git a/src/ctemplates.h b/src/ctemplates.h index 658a9f3..4d4fac5 100644 --- a/src/ctemplates.h +++ b/src/ctemplates.h @@ -170,8 +170,8 @@ struct TMPL_templates{ struct TMPL_token{ - char* start;//Start of token - char* end;//End of token + const char* start;//Start of token + const char* end;//End of token enum TMPL_tagtype type;//The type of token size_t length;//Length of token, should always be end-start struct TMPL_token* next;//The next token @@ -179,9 +179,9 @@ struct TMPL_token{ unsigned int character;// Not used currently }TMPL_token; -void TMPL_add_var_to_varlist(struct TMPL_varlist* vl, char* name, char* value); -void TMPL_add_loop_to_varlist(struct TMPL_varlist* vl, char* name, struct TMPL_loop* loop); -void TMPL_add_varlist_to_loop(struct TMPL_loop* l, struct TMPL_varlist* vl); +int TMPL_add_var_to_varlist(struct TMPL_varlist* vl, const char* name, const char* value); +int TMPL_add_loop_to_varlist(struct TMPL_varlist* vl, const char* name, struct TMPL_loop* loop); +int TMPL_add_varlist_to_loop(struct TMPL_loop* l, struct TMPL_varlist* vl); struct TMPL_varlist* TMPL_alloc_varlist(void); @@ -190,7 +190,7 @@ void TMPL_free_varlist(struct TMPL_varlist* t); struct TMPL_varitem* TMPL_alloc_varitem(void); void TMPL_free_varitem(struct TMPL_varitem* vi); -struct TMPL_templates* TMPL_alloc_template(char* t); +struct TMPL_templates* TMPL_alloc_template(const char* t); void TMPL_free_template(struct TMPL_templates* t); struct TMPL_loop* TMPL_alloc_loop(void); @@ -23,7 +23,7 @@ void bputc(struct TMPL_buf* b,char s){ } } -void bputsn(struct TMPL_buf* b, char* s, size_t size){ +void bputsn(struct TMPL_buf* b, const char* s, size_t size){ if(b->head == NULL){ struct LLNode* new = (struct LLNode*)malloc(sizeof(struct LLNode)); new->length = size; @@ -46,7 +46,7 @@ void bputsn(struct TMPL_buf* b, char* s, size_t size){ } } -void bputs(struct TMPL_buf* b, char* s){ +void bputs(struct TMPL_buf* b, const char* s){ size_t len = strlen(s); bputsn(b,s,len); } @@ -15,8 +15,8 @@ struct TMPL_buf{ struct LLNode* tail; }; -void bputs(struct TMPL_buf* b, char* s); -void bputsn(struct TMPL_buf* b, char* s, size_t size); +void bputs(struct TMPL_buf* b, const char* s); +void bputsn(struct TMPL_buf* b, const char* s, size_t size); void bputc(struct TMPL_buf* b, char s); @@ -15,7 +15,7 @@ int* init_array(int size) { return arr; } -int kmp(char* t,size_t tlen, char* p,size_t plen) { +int kmp(const char* t,size_t tlen, const char* p,size_t plen) { int m = plen; int n = tlen; @@ -46,7 +46,7 @@ int kmp(char* t,size_t tlen, char* p,size_t plen) { return -1; } -void failure(char* p, int* f) { +void failure(const char* p, int* f) { f[0] = 0; int i = 1; int j = 0; @@ -1,3 +1,3 @@ -void failure(char* pattern, int* f); -int kmp(char* t,size_t tlen, char* p,size_t plen); +void failure(const char* pattern, int* f); +int kmp(const char* t,size_t tlen, const char* p,size_t plen); |
