Example #1
0
struct jx * nvpair_to_jx( struct nvpair *nv )
{
	struct jx *object = jx_object(0);

	char *key;
	char *value;
	struct jx *jvalue;

	long long integer_value;
	double  double_value;

	nvpair_first_item(nv);
	while(nvpair_next_item(nv,&key,&value)) {
		if(!strcmp(value,"true")) {
			jvalue = jx_boolean(1);
		} else if(!strcmp(value,"false")) {
			jvalue = jx_boolean(0);
		} else if(!strcmp(value,"null")) {
			jvalue = jx_null();
		} else if(string_is_integer(value,&integer_value)) {
			jvalue = jx_integer(integer_value);
		} else if(string_is_float(value,&double_value)) {
			jvalue = jx_double(double_value);
		} else if(value[0]=='[' || value[0]=='{') {
			jvalue = jx_parse_string(value);
			if(!jvalue) jvalue = jx_string(value);
		} else {
			jvalue = jx_string(value);
		}
		jx_insert(object,jx_string(key),jvalue);
	}

	return object;
}
Example #2
0
bool CommandBase::SetArg(int arg, const char* val)
{
	if(0 == strcmp(val,"#")) return true;  //default arguments
	switch(args[arg].type) {
	case Bool: return string_is_bool(val,*(bool*)args[arg].data);
	case Int: return string_is_int(val,*(int*)args[arg].data);
	case Float: return string_is_float(val,*(float*)args[arg].data);
	case Double: return string_is_double(val,*(double*)args[arg].data);
	case String: *(const char**)args[arg].data = val;
		return true;
	}
	return false;
}
Example #3
0
t_linked_list	*resolve_line(t_linked_list *line, t_linked_list *declared_functions,
							t_linked_list **splitted_strings_line, t_linked_list *builtin_keywords)
{
	int 			i;
	t_linked_list	*resolved_line;
	char			*to_add;
	char			*tmp_string;
	t_linked_list	*new_line_strings;

	new_line_strings = new_list();
	resolved_line = new_list();
	i = 0;
	while (i < line->len && (*((char*)line->elts[i]) == TAB || *((char*)line->elts[i]) == SPACE))
	{
		if (!(to_add = (char*)malloc(sizeof(char))))
			malloc_error();
		*to_add = *((char*)line->elts[i]);
		add_to_list(resolved_line, to_add);
		add_to_list(new_line_strings, ft_strdup("\t"));
		i++;
	}
	while (i < line->len)
	{
		if (!(to_add = (char*)malloc(sizeof(char))))
			malloc_error();
		*to_add = *((char*)line->elts[i]);
		tmp_string = ((char*)(*splitted_strings_line)->elts[i]);
		if (*((char*)line->elts[i]) == NAME)
		{
			if (i > 0 && *((char*)line->elts[i]) == FUNCTION_DECL)
				*to_add = FUNCTION_NAME;
			else if (string_in_list((*splitted_strings_line)->elts[i], declared_functions))
				*to_add = FUNCTION_NAME;
			else if (string_in_list((*splitted_strings_line)->elts[i], builtin_keywords))
				*to_add = KEYWORD;
			else if (string_is_string((*splitted_strings_line)->elts[i]))
				*to_add = STRING_DEF;
			else if (string_is_character((*splitted_strings_line)->elts[i]))
				*to_add = CHARACTER_DEF;
			else if (string_is_integer((*splitted_strings_line)->elts[i]))
				*to_add = INTEGER_DEF;
			else if (string_is_float((*splitted_strings_line)->elts[i]))
				*to_add = FLOAT_DEF;
			else
				*to_add = VAR_NAME;
		}
		else if (*((char*)line->elts[i]) == EQUAL && i + 1 < line->len && *((char*)line->elts[i + 1]) == EQUAL)
		{
			*to_add = EQUALITY_CHECK;
			tmp_string = ft_strdup("==");
			i++;
		}
		else if (*((char*)line->elts[i]) == COLON && i + 2 < line->len && *((char*)line->elts[i + 1]) == COLON
																		&& *((char*)line->elts[i + 2]) == EQUAL)
		{
			*to_add = DEEPCOPY_EQUAL;
			tmp_string = ft_strdup("::=");
			i += 2;
		}
		else if (*((char*)line->elts[i]) == COLON && i + 1 < line->len && *((char*)line->elts[i + 1]) == EQUAL)
		{
			*to_add = COPY_EQUAL;
			tmp_string = ft_strdup(":=");
			i++;
		}
		else if (*((char*)line->elts[i]) == COLON && i + 1 < line->len && *((char*)line->elts[i + 1]) == COLON)
		{
			*to_add = DEEPCOPY;
			tmp_string = ft_strdup("::");
			i++;
		}
		else if (*((char*)line->elts[i]) == COLON && i + 1 < line->len)
		{
			*to_add = COPY;
			tmp_string = ft_strdup(":");
		}
		add_to_list(resolved_line, to_add);
		add_to_list(new_line_strings, tmp_string);
		i++;
	}
	*splitted_strings_line = new_line_strings;
	return (resolved_line);
}