Details
CamelArg
typedef struct {
	guint32 tag;
	union {
		gpointer ca_object;
		gint ca_int;
		gdouble ca_double;
		gchar *ca_str;
		gpointer ca_ptr;
	} u;
} CamelArg;
 
CamelArgV
typedef struct {
	va_list ap;
	gint argc;
	CamelArg argv[CAMEL_ARGV_MAX];
} CamelArgV;
 
CamelArgGet
typedef struct {
	guint32 tag;
	union {
		gpointer *ca_object;
		gint *ca_int;
		gdouble *ca_double;
		gchar **ca_str;
		gpointer *ca_ptr;
	} u;
} CamelArgGet;
 
CamelArgGetV
typedef struct {
	va_list ap;
	gint argc;
	CamelArgGet argv[CAMEL_ARGV_MAX];
} CamelArgGetV;
 
ca_object
#define ca_object u.ca_object
 
ca_int
#define ca_int u.ca_int
 
ca_double
#define ca_double u.ca_double
 
ca_str
#define ca_str u.ca_str
 
ca_ptr
#define ca_ptr u.ca_ptr
 
CAMEL_ARGV_MAX
#define CAMEL_ARGV_MAX (20)
 
camel_argv_start()
#define camel_argv_start(tv, last) va_start((tv)->ap, last)
 
camel_argv_end()
#define camel_argv_end(tv) va_end((tv)->ap)
 
camel_argv_build ()
gint                camel_argv_build                    (CamelArgV *tv);
 
camel_arggetv_build ()
gint                camel_arggetv_build                 (CamelArgGetV *tv);
 
camel_argv_ignore()
#define camel_argv_ignore(tv, i) ((tv)->argv[i].tag = ((tv)->argv[i].tag & CAMEL_ARG_TYPE) | CAMEL_ARG_IGNORE)
 
CamelProperty
typedef struct {
	guint32 tag;
	const gchar *name;
	const gchar *description;
} CamelProperty;