コード例 #1
0
ファイル: variable.c プロジェクト: biddyweb/libSystem
/* variable_new */
Variable * variable_new(VariableType type, void * value)
{
	Variable * variable;

	if((variable = object_new(sizeof(*variable))) == NULL)
		return NULL;
	if(variable_set_from(variable, type, value) != 0)
	{
		object_delete(variable);
		return NULL;
	}
	return variable;
}
コード例 #2
0
ファイル: calln.c プロジェクト: DeforaOS/libMarshall
/* main */
int main(void)
{
	int ret = 0;
	size_t i;
	const size_t count = 10;
	Variable ** args;
	int32_t i32;
	Variable * res;

	i32 = 0;
	if((res = variable_new(VT_INT32, &i32)) == NULL)
		return 2;
	if((args = malloc(sizeof(*args) * count)) == NULL)
	{
		variable_delete(res);
		return 2;
	}
	for(i = 0; i < count; i++)
	{
		i32 = i * 1111;
		if((args[i] = variable_new(VT_INT32, &i32)) == NULL)
			ret = 3;
	}
	for(i = 0; ret == 0 && i < count; i++)
	{
		i32 = i;
		if(variable_set_from(args[0], VT_INT32, &i32) != 0)
			ret = i + 4;
		else if(marshall_call(res, (MarshallCallback)_calln, i + 1,
					args) != 0)
			ret = i + 4;
		else if(variable_get_as(res, VT_INT32, &i32) != 0 || i32 != 0)
			ret = i + 4;
	}
	for(i = 0; i < count; i++)
		if(args[i] != NULL)
			variable_delete(args[i]);
	variable_delete(res);
	free(args);
	return ret;
}