## RestParams RestParams — Container for call parameters |

## Synopsis

                        RestParams;
    typedef             RestParamsIter;
    RestParams *        rest_params_new                     (void);
    void                rest_params_free                    (RestParams *params);
    void                rest_params_add                     (RestParams *params,
                                                             RestParam *param);
    RestParam *         rest_params_get                     (RestParams *params,
                                                             const char *name);
    void                rest_params_remove                  (RestParams *params,
                                                             const char *name);
    gboolean            rest_params_are_strings             (RestParams *params);
    GHashTable *        rest_params_as_string_hash_table    (RestParams *params);
    void                rest_params_iter_init               (RestParamsIter *iter,
                                                             RestParams *params);
    gboolean            rest_params_iter_next               (RestParamsIter *iter,
                                                             const char **name,
                                                             RestParam **param);

## Description

## Details

### RestParams

    typedef struct _RestParams RestParams;

### RestParamsIter

    typedef struct _GHashTableIter RestParamsIter;

### rest_params_new ()

    RestParams *        rest_params_new                     (void);

Create a new RestParams.

Returns : | A empty RestParams.

### rest_params_free ()

    void                rest_params_free                    (RestParams *params);

Destroy the RestParams and the RestParam objects that it contains.

`params` : | a valid RestParams

### rest_params_add ()

    void                rest_params_add                     (RestParams *params,
                                                             RestParam *param);

Add `param` to `params`.

`params` : | a valid RestParams
`param` : | a valid RestParam

### rest_params_get ()

    RestParam *         rest_params_get                     (RestParams *params,
                                                             const char *name);

Return the RestParam called `name`, or `NULL` if it doesn't exist.

`params` : | a valid RestParams
`name` : | a parameter name
Returns : | a RestParam or `NULL` if the name doesn't exist

### rest_params_remove ()

    void                rest_params_remove                  (RestParams *params,
                                                             const char *name);

Remove the RestParam called `name`.

`params` : | a valid RestParams
`name` : | a parameter name

### rest_params_are_strings ()

    gboolean            rest_params_are_strings             (RestParams *params);

Checks if the parameters are all simple strings (have a content type of "text/plain").

`params` : | a valid RestParams
Returns : | `TRUE` if all of the parameters are simple strings, `FALSE` otherwise.

### rest_params_as_string_hash_table ()

    GHashTable *        rest_params_as_string_hash_table    (RestParams *params);

Create a new GHashTable which contains the name and value of all string (content type of text/plain) parameters.

The values are owned by the RestParams, so don't destroy the RestParams before the hash table.

`params` : | a valid RestParams
Returns : | a new GHashTable. [element-type utf8 Rest.Param][transfer container]

### rest_params_iter_init ()

    void                rest_params_iter_init               (RestParamsIter *iter,
                                                             RestParams *params);

Initialize a parameter iterator over `params`. Modifying `params` after calling this function invalidates the returned iterator.

    1
    2
    3
    4
    5
    6
    7
    8
    RestParamsIter iter;
    const char *name;
    RestParam *param;

    rest_params_iter_init (&iter, params);
    while (rest_params_iter_next (&iter, &name, &param)) {
      /* do something with name and param */
    }

`iter` : | an uninitialized RestParamsIter
`params` : | a valid RestParams

### rest_params_iter_next ()

    gboolean            rest_params_iter_next               (RestParamsIter *iter,
                                                             const char **name,
                                                             RestParam **param);

Advances `iter` and retrieves the name and/or parameter that are now pointed at as a result of this advancement. If FALSE is returned, `name` and `param` are not set and the iterator becomes invalid.

`iter` : | an initialized RestParamsIter
`name` : | a location to store the name, or `NULL`
`param` : | a location to store the RestParam, or `NULL`
Returns : | `FALSE` if the end of the RestParams has been reached, `TRUE` otherwise.

## See Also

RestParam, RestProxyCall.