## toolConfigFile toolConfigFile — Generic read methods of the configuration files are defined here. |

## Synopsis

    enum                toolConfigFileError;
    #define             CONFIG_FILE_ERROR
    GQuark              configFileGet_quark                 ();
    gboolean            configFileClamp_float               (float *variable,
                                                             float value,
                                                             float min,
                                                             float max);
    gboolean            configFileRead_elementFromTokens    (gchar **tokens,
                                                             int *position,
                                                             VisuElement **values,
                                                             guint size,
                                                             int lineId,
                                                             GError **error);
    gboolean            configFileRead_float                (gchar *line,
                                                             int position,
                                                             float *values,
                                                             guint size,
                                                             GError **error);
    gboolean            configFileRead_floatWithElement     (gchar *line,
                                                             int position,
                                                             float *values,
                                                             guint size,
                                                             VisuElement **ele,
                                                             GError **error);
    gboolean            configFileRead_floatFromTokens      (gchar **tokens,
                                                             int *position,
                                                             float *values,
                                                             guint size,
                                                             int lineId,
                                                             GError **error);
    gboolean            configFileRead_integer              (gchar *line,
                                                             int position,
                                                             int *values,
                                                             guint size,
                                                             GError **error);
    gboolean            configFileRead_integerFromTokens    (gchar **tokens,
                                                             int *position,
                                                             int *values,
                                                             guint size,
                                                             int lineId,
                                                             GError **error);
    gboolean            configFileRead_string               (gchar *line,
                                                             int position,
                                                             gchar ***values,
                                                             guint size,
                                                             gboolean join,
                                                             GError **error);
    gboolean            configFileRead_stringFromTokens     (gchar **tokens,
                                                             int *position,
                                                             gchar ***values,
                                                             guint size,
                                                             int lineId,
                                                             GError **error);
    gboolean            configFileRead_stringWithElement    (gchar *line,
                                                             int position,
                                                             gchar ***values,
                                                             guint size,
                                                             VisuElement **ele,
                                                             GError **error);
    gboolean            configFileRead_boolean              (gchar *line,
                                                             int position,
                                                             gboolean *values,
                                                             guint size,
                                                             GError **error);
    gboolean            configFileRead_booleanWithElement   (gchar *line,
                                                             int position,
                                                             gboolean *values,
                                                             guint size,
                                                             VisuElement **ele,
                                                             GError **error);
    gboolean            configFileRead_booleanFromTokens    (gchar **tokens,
                                                             int *position,
                                                             gboolean *values,
                                                             guint size,
                                                             int lineId,
                                                             GError **error);

## Description

These methods give generic tools to read common data in the configuration files, such as arrays of float values or one VisuElement... It also defines a enumeration of detailed errors (see toolConfigFileError) when reading a file. All read elements are either from tokens (given `g_strsplit()`) or strings.

## Details

### enum toolConfigFileError

    typedef enum
      {
        CONFIG_FILE_ERROR_EMPTY_LINE,
        CONFIG_FILE_ERROR_BAD_ELEMENT_NAME,
        CONFIG_FILE_ERROR_MAX_ELEMENT,
        CONFIG_FILE_ERROR_CREATED_ELEMENT,
        CONFIG_FILE_ERROR_VALUE,
        CONFIG_FILE_ERROR_READ,
        CONFIG_FILE_ERROR_MISSING,
        CONFIG_FILE_ERROR_TAG,
        CONFIG_FILE_ERROR_MARKUP
      } toolConfigFileError;

Possible errors when parsing a config file.

`CONFIG_FILE_ERROR_EMPTY_LINE` | error when reading the file, found an empty line, where something should have been.
`CONFIG_FILE_ERROR_BAD_ELEMENT_NAME` | error when reading a VisuElement name.
`CONFIG_FILE_ERROR_MAX_ELEMENT` | error because too much VisuElement have been created.
`CONFIG_FILE_ERROR_CREATED_ELEMENT` | error when creating a new VisuElement.
`CONFIG_FILE_ERROR_VALUE` | error of file format, values read are out of bounds.
`CONFIG_FILE_ERROR_READ` | error of file format (can't read variables...).
`CONFIG_FILE_ERROR_MISSING` | error of file format (missing variables...).
`CONFIG_FILE_ERROR_TAG` | error dealing with a tag.
`CONFIG_FILE_ERROR_MARKUP` | error dealing with a markup (unkown one...).

### CONFIG_FILE_ERROR

    #define CONFIG_FILE_ERROR configFileGet_quark()

Domain used to parse config files.

### configFileGet_quark ()

    GQuark              configFileGet_quark                 ();

### configFileClamp_float ()

    gboolean            configFileClamp_float               (float *variable,
                                                             float value,
                                                             float min,
                                                             float max);

It puts value in a variable if value is in min and max or put min or max in if not. It return true if value is out of bounds. Min and max are inclusive values. If there is no max bounds then put max at a lower value than min and if there is no min bound, put min at a higher value than max.

`variable` : | a pointer to a storage for the value ;
`value` : | the value to put in the storage ;
`min` : | a lower bound ;
`max` : | a upper bound.
Returns : | TRUE if the value is out of bounds.

### configFileRead_elementFromTokens ()

    gboolean            configFileRead_elementFromTokens    (gchar **tokens,
                                                             int *position,
                                                             VisuElement **values,
                                                             guint size,
                                                             int lineId,
                                                             GError **error);

Read `size` VisuElement from `tokens`, store them in `values` and returns the new head in `tokens`.

`tokens` : | array of tokens resulting from a call to `g_strsplit()` with " " as separator ;
`position` : | IN, the position of the beginning in `tokens` ; OUT, one token after the last read ;
`values` : | allocated area to store read values ;
`size` : | the number of VisuElement to be read ;
`lineId` : | the number of the line of the config file which the `line` argument is taken from ;
`error` : | a location to store a possible reading error.
Returns : | TRUE if no error occured.

### configFileRead_float ()

    gboolean            configFileRead_float                (gchar *line,
                                                             int position,
                                                             float *values,
                                                             guint size,
                                                             GError **error);

Read `size` floating point values from `line` and store them in `values`.

`line` : | string where values are read from ;
`position` : | the number of the line of the config file which the `line` argument is taken from ;
`values` : | allocated area to store read values ;
`size` : | the number of floating point values to be read ;
`error` : | a location to store a possible reading error.
Returns : | TRUE if no error occured.

### configFileRead_floatWithElement ()

    gboolean            configFileRead_floatWithElement     (gchar *line,
                                                             int position,
                                                             float *values,
                                                             guint size,
                                                             VisuElement **ele,
                                                             GError **error);

Same as `configFileRead_float()` but begins by reading an element at the begining of the line.

`line` : | string where values are read from ;
`position` : | the number of the line of the config file which the `line` argument is taken from ;
`values` : | allocated area to store read values ;
`size` : | the number of floating point values to be read ;
`ele` : | a pointer to a VisuElement location ;
`error` : | a location to store a possible reading error.
Returns : | TRUE if no error occured.

### configFileRead_floatFromTokens ()

    gboolean            configFileRead_floatFromTokens      (gchar **tokens,
                                                             int *position,
                                                             float *values,
                                                             guint size,
                                                             int lineId,
                                                             GError **error);

Read `size` floating point values from `tokens`, store them in `values` and returns the new head in `tokens`.

`tokens` : | array of tokens resulting from a call to `g_strsplit()` with " " as separator ;
`position` : | IN, the position of the beginning in `tokens` ; OUT, one token after the last read ;
`values` : | allocated area to store read values ;
`size` : | the number of floating point values to be read ;
`lineId` : | the number of the line of the config file which the `line` argument is taken from ;
`error` : | a location to store a possible reading error.
Returns : | TRUE if no error occured.

### configFileRead_integer ()

    gboolean            configFileRead_integer              (gchar *line,
                                                             int position,
                                                             int *values,
                                                             guint size,
                                                             GError **error);

Read `size` integers from `line` and store them in `values`.

`line` : | string where values are read from ;
`position` : | the number of the line of the config file which the `line` argument is taken from ;
`values` : | allocated area to store read values ;
`size` : | the number of floating point values to be read ;
`error` : | a location to store a possible reading error.
Returns : | TRUE if no error occured.

### configFileRead_integerFromTokens ()

    gboolean            configFileRead_integerFromTokens    (gchar **tokens,
                                                             int *position,
                                                             int *values,
                                                             guint size,
                                                             int lineId,
                                                             GError **error);

Read `size` integer values from `tokens`, store them in `values` and returns the new head in `tokens`.

`tokens` : | array of tokens resulting from a call to `g_strsplit()` with " " as separator ;
`position` : | IN, the position of the beginning in `tokens` ; OUT, one token after the last read ;
`values` : | allocated area to store read values ;
`size` : | the number of floating point values to be read ;
`lineId` : | the number of the line of the config file which the `line` argument is taken from ;
`error` : | a location to store a possible reading error.
Returns : | TRUE if no error occured.

### configFileRead_string ()

    gboolean            configFileRead_string               (gchar *line,
                                                             int position,
                                                             gchar ***values,
                                                             guint size,
                                                             gboolean join,
                                                             GError **error);

Read `size` strings from `line` and `values` points on them. If more strings than `size` are available, an error is raised ; except if `join` is TRUE. In that case, the method return `size` tokens, joining all remaining ones.

`line` : | string where values are read from ;
`position` : | the number of the line of the config file which the `line` argument is taken from ;
`values` : | a location to point on a gchar** ;
`size` : | the number of strings to be read ;
`join` : | a boolean ;
`error` : | a location to store a possible reading error.
Returns : | TRUE if no error occured, then `values` point on an allocated memory area that is NULL terminated and that must be freed with `g_strfreev()`.

### configFileRead_stringFromTokens ()

    gboolean            configFileRead_stringFromTokens     (gchar **tokens,
                                                             int *position,
                                                             gchar ***values,
                                                             guint size,
                                                             int lineId,
                                                             GError **error);

Read `size` strings from `tokens`, store them in `values` and returns the new head in `tokens`.

`tokens` : | array of tokens resulting from a call to `g_strsplit()` with " " as separator ;
`position` : | IN, the position of the beginning in `tokens` ; OUT, one token after the last read ;
`values` : | a location to point on a gchar** ;
`size` : | the number of floating point values to be read ;
`lineId` : | the number of the line of the config file which the `line` argument is taken from ;
`error` : | a location to store a possible reading error.
Returns : | TRUE if no error occured.

### configFileRead_stringWithElement ()

    gboolean            configFileRead_stringWithElement    (gchar *line,
                                                             int position,
                                                             gchar ***values,
                                                             guint size,
                                                             VisuElement **ele,
                                                             GError **error);

Same as `configFileRead_string()` but begins by reading an element at the begining of the line.

`line` : | string where values are read from ;
`position` : | the number of the line of the config file which the `line` argument is taken from ;
`values` : | a location to point on a gchar** ;
`size` : | the number of strings to be read ;
`ele` : | a pointer to a VisuElement location ;
`error` : | a location to store a possible reading error.
Returns : | TRUE if no error occured, then `values` point on an allocated memory area that is NULL terminated and that must be freed with `g_strfreev()`.

### configFileRead_boolean ()

    gboolean            configFileRead_boolean              (gchar *line,
                                                             int position,
                                                             gboolean *values,
                                                             guint size,
                                                             GError **error);

Read `size` boolean values from `line` and store them in `values`.

`line` : | string where values are read from ;
`position` : | the number of the line of the config file which the `line` argument is taken from ;
`values` : | allocated area to store read values ;
`size` : | the number of boolean values to be read ;
`error` : | a location to store a possible reading error.
Returns : | TRUE if no error occured.

### configFileRead_booleanWithElement ()

    gboolean            configFileRead_booleanWithElement   (gchar *line,
                                                             int position,
                                                             gboolean *values,
                                                             guint size,
                                                             VisuElement **ele,
                                                             GError **error);

Same as `configFileRead_boolean()` but begins by reading an element at the begining of the line.

`line` : | string where values are read from ;
`position` : | the number of the line of the config file which the `line` argument is taken from ;
`values` : | allocated area to store read values ;
`size` : | the number of boolean values to be read ;
`ele` : | a pointer to a VisuElement location ;
`error` : | a location to store a possible reading error.
Returns : | TRUE if no error occured.

### configFileRead_booleanFromTokens ()

    gboolean            configFileRead_booleanFromTokens    (gchar **tokens,
                                                             int *position,
                                                             gboolean *values,
                                                             guint size,
                                                             int lineId,
                                                             GError **error);

Read `size` boolean values from `tokens`, store them in `values` and returns the new head in `tokens`.

`tokens` : | array of tokens resulting from a call to `g_strsplit()` with " " as separator ;
`position` : | IN, the position of the beginning in `tokens` ; OUT, one token after the last read ;
`values` : | allocated area to store read values ;
`size` : | the number of floating point values to be read ;
`lineId` : | the number of the line of the config file which the `line` argument is taken from ;
`error` : | a location to store a possible reading error.
Returns : | TRUE if no error occured.