view console/libgnt/gntutils.c @ 19794:b22d13f55232

[gaim-migrate @ 16684] change the code of SOAP Action,Now using a stupid way to do the soap, wish to implement it in a clean way! borrow a strptime to parse the timestamp received from MSN Server. committed by MaYuan<mayuan2006@gmail.com> committer: Ethan Blanton <elb@pidgin.im>
author Ma Yuan <mayuan2006@gmail.com>
date Thu, 10 Aug 2006 04:38:13 +0000
parents 0e1e59770cb0
children c7d84d4c5afa e354528c4163
line wrap: on
line source

#include "gntutils.h"

void gnt_closure_marshal_BOOLEAN__STRING(GClosure *closure,
										GValue *ret_value,
										guint n_param_values,
										const GValue *param_values,
										gpointer invocation_hint,
										gpointer marshal_data)
{
	typedef gboolean (*func) (gpointer data1, const char *arg1, gpointer data2);
	register func callback;
	register GCClosure *cc = (GCClosure*)closure;
	register gpointer data1, data2;
	gboolean ret;

	g_return_if_fail(ret_value != NULL);
	g_return_if_fail(n_param_values == 2);

	if (G_CCLOSURE_SWAP_DATA(closure))
	{
		data1 = closure->data;
		data2 = g_value_peek_pointer(param_values + 0);
	}
	else
	{
		data1 = g_value_peek_pointer(param_values + 0);
		data2 = closure->data;
	}

	callback = (func) (marshal_data ? marshal_data : cc->callback);
	ret = callback(data1, g_value_get_string(param_values + 1) , data2);
	g_value_set_boolean(ret_value, ret);
}

void gnt_closure_marshal_VOID__INT_INT_INT_INT(GClosure *closure,
										GValue *ret_value,
										guint n_param_values,
										const GValue *param_values,
										gpointer invocation_hint,
										gpointer marshal_data)
{
	typedef void (*func) (gpointer data1, int, int, int, int, gpointer data2);
	register func callback;
	register GCClosure *cc = (GCClosure*)closure;
	register gpointer data1, data2;

	g_return_if_fail(n_param_values == 5);

	if (G_CCLOSURE_SWAP_DATA(closure))
	{
		data1 = closure->data;
		data2 = g_value_peek_pointer(param_values + 0);
	}
	else
	{
		data1 = g_value_peek_pointer(param_values + 0);
		data2 = closure->data;
	}

	callback = (func) (marshal_data ? marshal_data : cc->callback);
	callback(data1,
			g_value_get_int(param_values + 1) ,
			g_value_get_int(param_values + 2) ,
			g_value_get_int(param_values + 3) ,
			g_value_get_int(param_values + 4) ,
			data2);
}

void gnt_closure_marshal_VOID__INT_INT(GClosure *closure,
										GValue *ret_value,
										guint n_param_values,
										const GValue *param_values,
										gpointer invocation_hint,
										gpointer marshal_data)
{
	typedef void (*func) (gpointer data1, int, int, gpointer data2);
	register func callback;
	register GCClosure *cc = (GCClosure*)closure;
	register gpointer data1, data2;

	g_return_if_fail(n_param_values == 3);

	if (G_CCLOSURE_SWAP_DATA(closure))
	{
		data1 = closure->data;
		data2 = g_value_peek_pointer(param_values + 0);
	}
	else
	{
		data1 = g_value_peek_pointer(param_values + 0);
		data2 = closure->data;
	}

	callback = (func) (marshal_data ? marshal_data : cc->callback);
	callback(data1,
			g_value_get_int(param_values + 1) ,
			g_value_get_int(param_values + 2) ,
			data2);
}