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')

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