CtplEval

CtplEval — Expression evaluation

Functions

Types and Values

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.