tlang-c/libtlang/src/if.c

28 lines
791 B
C
Raw Normal View History

2023-04-24 18:41:46 +00:00
#include "tlang.h"
extern bool __loop_bool(node_t* n,scope_t* s);
tobject_t* __if_exec(node_t* n,scope_t* s)
{
if(__loop_bool(n->data.if_node.condition,s))
{
return n->data.if_node.yes->execute(n->data.if_node.yes,s);
} else {
return n->data.if_node.no->execute(n->data.if_node.no,s);
}
}
void __if_free(node_t* n)
{
node_free(n->data.if_node.condition);
node_free(n->data.if_node.yes);
node_free(n->data.if_node.no);
}
node_t* node_if_create(node_t* condition,node_t* y,node_t* n)
{
node_t* node = (node_t*)malloc(sizeof(node_t));
node->type = ifnode;
node->data.if_node.condition = condition;
node->data.if_node.yes = y;
node->data.if_node.no = n;
node->execute = __if_exec;
node->free = __if_free;
return node;
}