From d5de744364f7e9c574a5f5604c94120b9eeb22a7 Mon Sep 17 00:00:00 2001 From: David Walter Seikel Date: Tue, 10 Jan 2012 03:49:52 +1000 Subject: Leaf cloner. --- LuaSL/src/LuaSL_LSL_tree.c | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) (limited to 'LuaSL') diff --git a/LuaSL/src/LuaSL_LSL_tree.c b/LuaSL/src/LuaSL_LSL_tree.c index cc6ed3f..3728054 100644 --- a/LuaSL/src/LuaSL_LSL_tree.c +++ b/LuaSL/src/LuaSL_LSL_tree.c @@ -154,19 +154,21 @@ static void burnLeaf(LSL_Leaf *leaf) } } -LSL_Leaf *addInteger(LSL_Leaf *lval, int value) +static LSL_Leaf *cloneLeaf(LSL_Leaf *source) { - LSL_Leaf *leaf = newLeaf(LSL_INTEGER, NULL, NULL); + LSL_Leaf *leaf = newLeaf(LSL_UNKNOWN, NULL, NULL); if (leaf) - { - leaf->value.integerValue = value; - leaf->ignorableText = lval->ignorableText; - } + memcpy(leaf, source, sizeof(LSL_Leaf)); return leaf; } +LSL_Leaf *addInteger(LSL_Leaf *lval, int value) +{ + return cloneLeaf(lval); +} + LSL_Leaf *addOperation(LSL_Leaf *lval, LSL_Type type, LSL_Leaf *left, LSL_Leaf *right) { LSL_Leaf *leaf = newLeaf(type, left, right); @@ -216,7 +218,9 @@ LSL_Leaf *addStatement(LSL_Statement *statement, LSL_Leaf *root) LSL_Leaf *leaf = newLeaf(LSL_STATEMENT, root, NULL); if (leaf) + { leaf->value.statementValue = statement; + } return leaf; } -- cgit v1.1