Libecoli
0.11.5
Extensible COmmand LIne library
Toggle main menu visibility
Loading...
Searching...
No Matches
node_expr.h
1
/* SPDX-License-Identifier: BSD-3-Clause
2
* Copyright 2016, Olivier MATZ <zer0@droids-corp.org>
3
*/
4
12
13
#pragma once
14
15
#include <ecoli/node.h>
16
32
typedef
int (*
ec_node_expr_eval_var_t
)(
void
**result,
void
*userctx,
const
struct
ec_pnode
*var);
33
51
typedef
int (*
ec_node_expr_eval_pre_op_t
)(
52
void
**result,
53
void
*userctx,
54
void
*operand,
55
const
struct
ec_pnode
*operator
56
);
57
63
typedef
int (*
ec_node_expr_eval_post_op_t
)(
64
void
**result,
65
void
*userctx,
66
void
*operand,
67
const
struct
ec_pnode
*operator
68
);
69
88
typedef
int (*
ec_node_expr_eval_bin_op_t
)(
89
void
**result,
90
void
*userctx,
91
void
*operand1,
92
const
struct
ec_pnode
*
operator
,
93
void
* operand2
94
);
95
114
typedef
int (*
ec_node_expr_eval_parenthesis_t
)(
115
void
**result,
116
void
*userctx,
117
const
struct
ec_pnode
*open_paren,
118
const
struct
ec_pnode
*close_paren,
119
void
*value
120
);
121
130
typedef
void (*
ec_node_expr_eval_free_t
)(
void
*result,
void
*userctx);
131
140
struct
ec_node
*
ec_node_expr
(
const
char
*
id
);
141
153
int
ec_node_expr_set_val_node
(
struct
ec_node
*gen_node,
struct
ec_node
*val_node);
154
166
int
ec_node_expr_add_bin_op
(
struct
ec_node
*gen_node,
struct
ec_node
*op);
167
179
int
ec_node_expr_add_pre_op
(
struct
ec_node
*gen_node,
struct
ec_node
*op);
180
192
int
ec_node_expr_add_post_op
(
struct
ec_node
*gen_node,
struct
ec_node
*op);
193
208
int
ec_node_expr_add_parenthesis
(
209
struct
ec_node
*gen_node,
210
struct
ec_node
*open,
211
struct
ec_node
*close
212
);
213
217
struct
ec_node_expr_eval_ops
{
218
ec_node_expr_eval_var_t
eval_var;
219
ec_node_expr_eval_pre_op_t
eval_pre_op;
220
ec_node_expr_eval_post_op_t
eval_post_op;
221
ec_node_expr_eval_bin_op_t
eval_bin_op;
222
ec_node_expr_eval_parenthesis_t
eval_parenthesis;
223
ec_node_expr_eval_free_t
eval_free;
224
};
225
242
int
ec_node_expr_eval
(
243
void
**result,
244
const
struct
ec_node
*node,
245
struct
ec_pnode
*parse,
246
const
struct
ec_node_expr_eval_ops
*ops,
247
void
*userctx
248
);
249
ec_node_expr_add_post_op
int ec_node_expr_add_post_op(struct ec_node *gen_node, struct ec_node *op)
ec_node_expr_eval
int ec_node_expr_eval(void **result, const struct ec_node *node, struct ec_pnode *parse, const struct ec_node_expr_eval_ops *ops, void *userctx)
ec_node_expr_add_bin_op
int ec_node_expr_add_bin_op(struct ec_node *gen_node, struct ec_node *op)
ec_node_expr_eval_pre_op_t
int(* ec_node_expr_eval_pre_op_t)(void **result, void *userctx, void *operand, const struct ec_pnode *operator)
Definition
node_expr.h:51
ec_node_expr_eval_bin_op_t
int(* ec_node_expr_eval_bin_op_t)(void **result, void *userctx, void *operand1, const struct ec_pnode *operator, void *operand2)
Definition
node_expr.h:88
ec_node_expr_eval_free_t
void(* ec_node_expr_eval_free_t)(void *result, void *userctx)
Definition
node_expr.h:130
ec_node_expr_add_pre_op
int ec_node_expr_add_pre_op(struct ec_node *gen_node, struct ec_node *op)
ec_node_expr_add_parenthesis
int ec_node_expr_add_parenthesis(struct ec_node *gen_node, struct ec_node *open, struct ec_node *close)
ec_node_expr_eval_var_t
int(* ec_node_expr_eval_var_t)(void **result, void *userctx, const struct ec_pnode *var)
Definition
node_expr.h:32
ec_node_expr_eval_post_op_t
int(* ec_node_expr_eval_post_op_t)(void **result, void *userctx, void *operand, const struct ec_pnode *operator)
Definition
node_expr.h:63
ec_node_expr
struct ec_node * ec_node_expr(const char *id)
ec_node_expr_set_val_node
int ec_node_expr_set_val_node(struct ec_node *gen_node, struct ec_node *val_node)
ec_node_expr_eval_parenthesis_t
int(* ec_node_expr_eval_parenthesis_t)(void **result, void *userctx, const struct ec_pnode *open_paren, const struct ec_pnode *close_paren, void *value)
Definition
node_expr.h:114
ec_node
struct ec_node * ec_node(const char *typename, const char *id)
ec_pnode
struct ec_pnode * ec_pnode(const struct ec_node *node)
ec_node_expr_eval_ops
Definition
node_expr.h:217
ecoli
node_expr.h
Generated by
1.17.0