CTPL Reference Manual: CtplEval

## CtplEval CtplEval — Expression evaluation |

## Functions

#define | CTPL_EVAL_ERROR
gboolean | ctpl_eval_value ()
gboolean | ctpl_eval_bool ()

## Types and Values

enum | CtplEvalError

## Includes

    #include <ctpl/ctpl.h>

## 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()`.

## Functions

### CTPL_EVAL_ERROR

    #define CTPL_EVAL_ERROR  (ctpl_eval_error_quark ())

Error domain of CtplEval.

### 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` .

#### Parameters

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.

#### Parameters

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

## Types and Values

### enum CtplEvalError

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

#### Members

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. |