## CtplEval CtplEval — Expression evaluation |

## Synopsis

    #include <ctpl/ctpl.h>

    #define             CTPL_EVAL_ERROR
    enum                CtplEvalError;
    gboolean            ctpl_eval_value                     (const CtplTokenExpr *expr,
                                                             CtplEnviron *env,
                                                             CtplValue *value,
                                                             GError **error);
    gboolean            ctpl_eval_bool                      (const CtplTokenExpr *expr,
                                                             CtplEnviron *env,
                                                             gboolean *result,
                                                             GError **error);

## Description

Computes a CtplTokenExpr against a CtplEnviron. It is the equivalent of the parser for expressions.

Theses functions computes an expressions and flattens it to a single value: the result. To evaluate an expression, use `ctpl_eval_value()`. You can evaluate an expression to a boolean with `ctpl_eval_bool()`.

## Details

### CTPL_EVAL_ERROR

    #define CTPL_EVAL_ERROR  (ctpl_eval_error_quark ())

Error domain of CtplEval.

### enum CtplEvalError

    typedef enum _CtplEvalError
    {
      CTPL_EVAL_ERROR_INVALID_OPERAND,
      CTPL_EVAL_ERROR_SYMBOL_NOT_FOUND,
      CTPL_EVAL_ERROR_FAILED
    } CtplEvalError;

Error codes that eval functions can throw, from the `CTPL_EVAL_ERROR` domain.

`CTPL_EVAL_ERROR_INVALID_OPERAND` | An operand is incompatible with is usage.
`CTPL_EVAL_ERROR_SYMBOL_NOT_FOUND` | A symbol cannot be found in the environment.
`CTPL_EVAL_ERROR_FAILED` | An error occurred without any precision on what failed.

### ctpl_eval_value ()

    gboolean            ctpl_eval_value                     (const CtplTokenExpr *expr,
                                                             CtplEnviron *env,
                                                             CtplValue *value,
                                                             GError **error);

Computes the given CtplTokenExpr with the environ `env`, storing the resutl in `value`.

`expr` : | The CtplTokenExpr to evaluate
`env` : | The expression's environment, where lookup symbols
`value` : | CtplValue where store the evaluation result on success
`error` : | Return location for errors, or `NULL` to ignore them
Returns : | `TRUE` on success, `FALSE` otherwise.

Since 0.2

### ctpl_eval_bool ()

    gboolean            ctpl_eval_bool                      (const CtplTokenExpr *expr,
                                                             CtplEnviron *env,
                                                             gboolean *result,
                                                             GError **error);

Computes the given expression to a boolean. Computing to a boolean means computing the expression's value and then check if this value should be considered as false or true.

`expr` : | The CtplTokenExpr to evaluate
`env` : | The expression's environment, where lookup symbols
`result` : | Return location for the expression result, or `NULL`. [out][allow-none]
`error` : | Return location for errors, or `NULL` to ignore them
Returns : | `TRUE` on success, `FALSE` otherwise.

Since 0.2