From 1a05e4c083e0b7100e5782185f96e65b5446aab3 Mon Sep 17 00:00:00 2001 From: David Walter Seikel Date: Tue, 31 Jan 2012 13:00:56 +1000 Subject: Statements now have an ignorable array. --- LuaSL/src/LuaSL_LSL_tree.h | 2 +- LuaSL/src/LuaSL_compile.c | 22 ++++++++++++---------- 2 files changed, 13 insertions(+), 11 deletions(-) (limited to 'LuaSL/src') diff --git a/LuaSL/src/LuaSL_LSL_tree.h b/LuaSL/src/LuaSL_LSL_tree.h index 1903188..18a4d81 100644 --- a/LuaSL/src/LuaSL_LSL_tree.h +++ b/LuaSL/src/LuaSL_LSL_tree.h @@ -223,7 +223,7 @@ struct _LSL_Statement LSL_Block *block; LSL_Type type; // Expression type. #if LUASL_DIFF_CHECK - Eina_Strbuf *ignorableText; + Eina_Strbuf **ignorable; // Can be up to five of these I think. #endif /* LSL_Leaf *addStatement(LSL_Leaf *lval, LSL_Type type, LSL_Leaf *left, LSL_Leaf *expr, LSL_Leaf *right, LSL_Leaf *block); diff --git a/LuaSL/src/LuaSL_compile.c b/LuaSL/src/LuaSL_compile.c index 92542c3..8bbffe0 100644 --- a/LuaSL/src/LuaSL_compile.c +++ b/LuaSL/src/LuaSL_compile.c @@ -700,6 +700,16 @@ LSL_Leaf *addStatement(LuaSL_compiler *compiler, LSL_Leaf *lval, LSL_Type type, stat->parenthesis = parens->value.parenthesis; } + if (lval) + { +#if LUASL_DIFF_CHECK + stat->ignorable = calloc(1, sizeof(Eina_Strbuf *)); + stat->ignorable[0] = lval->ignorable; + lval->ignorable = NULL; +#endif + lval->value.statementValue = stat; + } + switch (type) { case LSL_EXPRESSION : @@ -759,14 +769,6 @@ LSL_Leaf *addStatement(LuaSL_compiler *compiler, LSL_Leaf *lval, LSL_Type type, } } - if (lval) - { -#if LUASL_DIFF_CHECK - stat->ignorableText = lval->ignorableText; - lval->ignorableText = NULL; -#endif - lval->value.statementValue = stat; - } } return lval; @@ -1376,8 +1378,8 @@ static void outputRawStatement(FILE *file, outputMode mode, LSL_Statement *state outputRawBlock(file, mode, statement->block); #if LUASL_DIFF_CHECK - if (statement->ignorableText) - fwrite(eina_strbuf_string_get(statement->ignorableText), 1, eina_strbuf_length_get(statement->ignorableText), file); + if ((statement->ignorable) && (statement->ignorable[0])) + fwrite(eina_strbuf_string_get(statement->ignorable[0]), 1, eina_strbuf_length_get(statement->ignorable[0]), file); #endif if (!isBlock) -- cgit v1.1