## camel-arg

camel-arg

## Synopsis

                        CamelArg;
                        CamelArgV;
                        CamelArgGet;
                        CamelArgGetV;
    #define             ca_object
    #define             ca_int
    #define             ca_double
    #define             ca_str
    #define             ca_ptr
    #define             CAMEL_ARGV_MAX
    #define             camel_argv_start                    (tv, last)
    #define             camel_argv_end                      (tv)
    gint                camel_argv_build                    (CamelArgV *tv);
    gint                camel_arggetv_build                 (CamelArgGetV *tv);
    #define             camel_argv_ignore                   (tv, i)
                        CamelProperty;

## Description

## 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)

`tv` : |
`last` : |

### camel_argv_end()

    #define camel_argv_end(tv) va_end((tv)->ap)

`tv` : |

### camel_argv_build ()

    gint                camel_argv_build                    (CamelArgV *tv);

`tv` : |
Returns : |

### camel_arggetv_build ()

    gint                camel_arggetv_build                 (CamelArgGetV *tv);

`tv` : |
Returns : |

### camel_argv_ignore()

    #define camel_argv_ignore(tv, i) ((tv)->argv[i].tag = ((tv)->argv[i].tag & CAMEL_ARG_TYPE) | CAMEL_ARG_IGNORE)

`tv` : |
`i` : |

### CamelProperty

    typedef struct {
    	guint32 tag;
    	const gchar *name;
    	const gchar *description;
    } CamelProperty;