## toolOptions

toolOptions — A convienent wrapper around GHashTable that can support types.

## Synopsis

    struct      Option_stuct;
    typedef     Option;
    typedef     OptionTable;
    enum        OptionTypes;
    Option*     toolOptionsNew_optionBoolean    (const gchar *name,
                                                 const gchar *label);
    Option*     toolOptionsNew_optionFloat      (const gchar *name,
                                                 const gchar *label);
    Option*     toolOptionsNew_optionInteger    (const gchar *name,
                                                 const gchar *label);
    #define     toolOptionsNew_table            ()
    void        toolOptionsFree_option          (gpointer option);
    #define     toolOptionsFree_table           (table)
    #define     toolOptionsAdd_optionToTable    (table, option)
    gchar*      toolOptionsGet_label            (Option *option);
    gchar*      toolOptionsGet_name             (Option *option);
    #define     toolOptionsGet_optionFromTable  (table, option)
    OptionTypes toolOptionsGet_type             (Option *option);
    gchar*      toolOptionsGet_valueAndLabel    (Option *option);
    gboolean    toolOptionsGet_valueBoolean     (Option *option,
                                                 gboolean *value);
    gboolean    toolOptionsGet_valueFloat       (Option *option,
                                                 float *value);
    gboolean    toolOptionsGet_valueInteger     (Option *option,
                                                 int *value);
    void        toolOptionsSet_valueBoolean     (Option *option,
                                                 gboolean value);
    void        toolOptionsSet_valueFloat       (Option *option,
                                                 float value);
    void        toolOptionsSet_valueInteger     (Option *option,
                                                 int value);

## Description

This wrapper is a simple way to store integers, floating point values or booleans in a table, accessing with a string key and remembering their types.

## Details

### struct Option_stuct

    struct Option_stuct;

Opaque structure to store values, their ranges...

### Option

    typedef struct Option_stuct Option;

Short way to address Option_stuct.

### OptionTable

    typedef GHashTable OptionTable;

This hashtable is used to specificaly bind strings to Option elements.

### enum OptionTypes

    typedef enum
      {
        OPTION_BOOLEAN,
        OPTION_INTEGER,
        OPTION_FLOAT,
        NB_OPTION_TYPES
      } OptionTypes;

These are types supported in the OptionTable.

`OPTION_BOOLEAN` | a boolean value ;
`OPTION_INTEGER` | an integer value ;
`OPTION_FLOAT` | a floating point value ;
`NB_OPTION_TYPES` | number of suppoted types.

### toolOptionsNew_optionBoolean ()

    Option*     toolOptionsNew_optionBoolean    (const gchar *name,
                                                 const gchar *label);

Create a new Option using the name as identifier.

`name` : | a string identifying the option ;
`label` : | a string describing shortly the option (must be in UTF-8).
Returns : | a newly created option, use `toolOptionsFree_option()` to free it.

### toolOptionsNew_optionFloat ()

    Option*     toolOptionsNew_optionFloat      (const gchar *name,
                                                 const gchar *label);

Create a new Option using the name as identifier.

`name` : | a string identifying the option ;
`label` : | a string describing shortly the option (must be in UTF-8).
Returns : | a newly created option, use `toolOptionsFree_option()` to free it.

### toolOptionsNew_optionInteger ()

    Option*     toolOptionsNew_optionInteger    (const gchar *name,
                                                 const gchar *label);

Create a new Option using the name as identifier.

`name` : | a string identifying the option ;
`label` : | a string describing shortly the option (must be in UTF-8).
Returns : | a newly created option, use `toolOptionsFree_option()` to free it.

### toolOptionsNew_table()

    #define     toolOptionsNew_table()

Create a new table of options. Strings are used as keys and elements are Option.

### toolOptionsFree_option ()

    void        toolOptionsFree_option          (gpointer option);

Free the memory used by the `option`.

`option` : | the Option to free.

### toolOptionsFree_table()

    #define toolOptionsFree_table(table) g_hash_table_destroy((GHashTable*)table);

Free all memory used by a table of options, and free also its elements.

`table` : | the table to free.

### toolOptionsAdd_optionToTable()

    #define     toolOptionsAdd_optionToTable(table, option)

Add the given `option` to the table, using its name as key.

`table` : | the table to add the option to ;
`option` : | an Option to be added.

### toolOptionsGet_label ()

    gchar*      toolOptionsGet_label            (Option *option);

Get the label of the option.

`option` : | the Option to get the label of.
Returns : | a string owned by V_Sim, should not be freed.

### toolOptionsGet_name ()

    gchar*      toolOptionsGet_name             (Option *option);

Get the name of the option.

`option` : | the Option to get the name of.
Returns : | a string owned by V_Sim, should not be freed.

### toolOptionsGet_optionFromTable()

    #define     toolOptionsGet_optionFromTable(table, option)

Look in `table` to find `option`. If no option with this name is found, then it

`table` : | the table to look in ;
`option` : | a string being the option name.

### toolOptionsGet_type ()

    OptionTypes toolOptionsGet_type             (Option *option);

Get the type of the option.

`option` : | the Option to get the type of.
Returns : | a OptionTypes value.

### toolOptionsGet_valueAndLabel ()

    gchar*      toolOptionsGet_valueAndLabel    (Option *option);

This method returns a string with the value followed by the label in parenthesis and with Pango markup for smaller font.

`option` : | the Option to get the value from.
Returns : | a newly created markup string.

### toolOptionsGet_valueBoolean ()

    gboolean    toolOptionsGet_valueBoolean     (Option *option,
                                                 gboolean *value);

Read the value of one option.

`option` : | the Option to get the value from ;
`value` : | a location to store the value.
Returns : | FALSE if the value is currently unset.

### toolOptionsGet_valueFloat ()

    gboolean    toolOptionsGet_valueFloat       (Option *option,
                                                 float *value);

Read the value of one option.

`option` : | the Option to get the value from ;
`value` : | a location to store the value.
Returns : | FALSE if the value is currently unset.

### toolOptionsGet_valueInteger ()

    gboolean    toolOptionsGet_valueInteger     (Option *option,
                                                 int *value);

Read the value of one option.

`option` : | the Option to get the value from ;
`value` : | a location to store the value.
Returns : | FALSE if the value is currently unset.

### toolOptionsSet_valueBoolean ()

    void        toolOptionsSet_valueBoolean     (Option *option,
                                                 gboolean value);

Change or set (if not set yet) the value of one option.

`option` : | the Option to set the value of ;
`value` : | the new value.

### toolOptionsSet_valueFloat ()

    void        toolOptionsSet_valueFloat       (Option *option,
                                                 float value);

Change or set (if not set yet) the value of one option.

`option` : | the Option to set the value of ;
`value` : | the new value.

### toolOptionsSet_valueInteger ()

    void        toolOptionsSet_valueInteger     (Option *option,
                                                 int value);

Change or set (if not set yet) the value of one option.

`option` : | the Option to set the value of ;
`value` : | the new value.