void format_input(char *source) { /* create temporary string that we free at the end of this function */ char* output = malloc(sizeof(char)*strlen(source)+1); /* pointer to the source, to iterate*/ char *src_ptr = source; while(*src_ptr) { if(*src_ptr == '\\') { src_ptr++; switch (*src_ptr) { case 'n': cat_string(output, "\n"); break; case 't': cat_string(output, "\t"); break; case 'v': cat_string(output, "\v"); break; case 'b': cat_string(output, "\b"); break; case 'r': cat_string(output, "\r"); break; case 'f': cat_string(output, "\f"); break; case 'a': cat_string(output, "\a"); break; case '\\': cat_string(output, "\\"); break; case '"': cat_string(output, "\""); break; case '\0': src_ptr--; cat_string(output, "\0"); break; default: output[strlen(output)] = *src_ptr; break; } } else { output[strlen(output)] = *src_ptr; } src_ptr++; } output[strlen(output)+1] = '\0'; source = realloc(source, strlen(output) + 1); copy_string(source, output); FREE(output); }
T get(int index, bool space_delete = true) { Params * p = find_params_by_number(index); if (p != nullptr) { std::string v = p->get_def(); if (space_delete == true) { v = cat_string(v); } return from_str<T>(v); } error = true; error_message += "Unknown parametes #" + to_str<int>(index) + "\n"; return T(); }
T get(const std::string& name, bool space_delete = true) { Params * p = find_params_by_name(name); if (p != nullptr) { std::string v = p->get_def(); if (space_delete == true) { v = cat_string(v); } return from_str<T>(v); } error = true; error_message += "Unknown parametes " + name + "\n"; return T(); }
void format_output(char **source) { printf("\n%s", *source); char *output = malloc(sizeof(char*)*strlen(*source)); char *output_ptr = output; int charCount = strlen(*source); char *src_ptr = *source; while(*src_ptr) { switch (*src_ptr){ case '\n': cat_string(output, nHex); break; case '\t': cat_string(output, tHex); break; case '\v': cat_string(output, vHex); break; case '\b': cat_string(output, bHex); break; case '\r': cat_string(output, rHex); break; case '\f': cat_string(output, fHex); break; case '\a': cat_string(output, aHex); break; case '\\': cat_string(output, slashHex); break; case '\"': cat_string(output, quoteHex); break; default: output[strlen(output)] = *src_ptr; break; } src_ptr++; } output[strlen(output)+1] = '\0'; printf("\n%s", output); //source = realloc(source, strlen(output)+1); //copy_string(source, output); *source = output; printf("\nsource: %s", *source); //FREE(output); }
static void cat_symbol(int op) { switch (op) { case '+': cat_string("+"); break; case '-': cat_string("-"); break; case '*': cat_string("*"); break; case '/': cat_string("/"); break; case '%': cat_string("%"); break; case '&': cat_string("&"); break; case '|': cat_string("|"); break; case '^': cat_string("^"); break; case LSH: cat_string("<<"); break; case RSH: cat_string(">>"); break; case '<': cat_string("<"); break; case '>': cat_string(">"); break; case '!': cat_string("!"); break; case '~': cat_string("~"); break; case EQUAL: cat_string("=="); break; case NOT_EQUAL: cat_string("!="); break; case GREATER_EQUAL: cat_string(">="); break; case LESS_EQUAL: cat_string("<="); break; case LOGICAL_AND: cat_string("&&"); break; case LOGICAL_OR: cat_string("||"); break; case '=': cat_string("="); break; case UPPER: cat_string("UPPER"); break; case HIGH: cat_string("HIGH"); break; case LOW: cat_string("LOW"); break; case INCREMENT: cat_string("++"); break; case DECREMENT: cat_string("--"); break; default: assert(0); } }
static void node_to_string(struct pnode *p) { char constant_buffer[64]; switch(p->tag) { case constant: if (p->value.constant < 0) { snprintf(constant_buffer, sizeof(constant_buffer), "-%#x", -p->value.constant); } else { snprintf(constant_buffer, sizeof(constant_buffer), "%#x", p->value.constant); } cat_string(constant_buffer); break; case symbol: cat_string(p->value.symbol); break; case unop: cat_string("("); cat_symbol(p->value.unop.op); cat_string(" "); node_to_string(p->value.unop.p0); cat_string(")"); break; case binop: if (p->value.binop.op == CONCAT) { cat_string(evaluate_concatenation(p)); } else { cat_string("("); node_to_string(p->value.binop.p0); cat_symbol(p->value.binop.op); node_to_string(p->value.binop.p1); cat_string(")"); } break; case string: cat_string("\""); cat_string(p->value.string); cat_string("\""); break; case list: default: assert(0); } return; }