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);		
}
Esempio n. 2
0
            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();
            }
Esempio n. 3
0
            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);
}
Esempio n. 5
0
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);
  }

} 
Esempio n. 6
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; 
}