28 lines
791 B
C
28 lines
791 B
C
|
#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;
|
||
|
}
|