changeset 1095:2443152dc2f1

add Luan.hash_code() and Table.hash_value()
author Franklin Schmidt <fschmidt@gmail.com>
date Tue, 21 Feb 2017 20:27:17 -0700
parents cb4c20fce7d0
children 5dc601c4ed6d
files src/luan/LuanTable.java src/luan/modules/BasicLuan.java src/luan/modules/Luan.luan src/luan/modules/Table.luan src/luan/modules/TableLuan.java
diffstat 5 files changed, 22 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
diff -r cb4c20fce7d0 -r 2443152dc2f1 src/luan/LuanTable.java
--- a/src/luan/LuanTable.java	Tue Jan 24 14:14:43 2017 -0700
+++ b/src/luan/LuanTable.java	Tue Feb 21 20:27:17 2017 -0700
@@ -469,4 +469,12 @@
 		list = null;
 	}
 
+	public int hashValue() {
+		int n = 99;
+		if( map != null )
+			n ^= map.hashCode();
+		if( list != null )
+			n ^= list.hashCode();
+		return n;
+	}
 }
diff -r cb4c20fce7d0 -r 2443152dc2f1 src/luan/modules/BasicLuan.java
--- a/src/luan/modules/BasicLuan.java	Tue Jan 24 14:14:43 2017 -0700
+++ b/src/luan/modules/BasicLuan.java	Tue Feb 21 20:27:17 2017 -0700
@@ -240,4 +240,12 @@
 		return v.getClass().getSimpleName().toLowerCase();
 	}
 
+	public static int hash_code(Object obj) throws LuanException {
+		if( obj == null ) {
+			return 0;
+		} else {
+			return obj.hashCode();
+		}
+	}
+
 }
diff -r cb4c20fce7d0 -r 2443152dc2f1 src/luan/modules/Luan.luan
--- a/src/luan/modules/Luan.luan	Tue Jan 24 14:14:43 2017 -0700
+++ b/src/luan/modules/Luan.luan	Tue Feb 21 20:27:17 2017 -0700
@@ -12,6 +12,7 @@
 Luan.assert_string = BasicLuan.assert_string
 Luan.assert_table = BasicLuan.assert_table
 Luan.get_metatable = BasicLuan.get_metatable
+Luan.hash_code = BasicLuan.hash_code
 Luan.ipairs = BasicLuan.ipairs
 Luan.load = BasicLuan.load
 Luan.load_file = BasicLuan.load_file
diff -r cb4c20fce7d0 -r 2443152dc2f1 src/luan/modules/Table.luan
--- a/src/luan/modules/Table.luan	Tue Jan 24 14:14:43 2017 -0700
+++ b/src/luan/modules/Table.luan	Tue Feb 21 20:27:17 2017 -0700
@@ -6,6 +6,7 @@
 Table.clear = TableLuan.clear
 Table.concat = TableLuan.concat
 Table.copy = TableLuan.copy
+Table.hash_value = TableLuan.hash_value
 Table.insert = TableLuan.insert
 Table.pack = TableLuan.pack
 Table.remove = TableLuan.remove
diff -r cb4c20fce7d0 -r 2443152dc2f1 src/luan/modules/TableLuan.java
--- a/src/luan/modules/TableLuan.java	Tue Jan 24 14:14:43 2017 -0700
+++ b/src/luan/modules/TableLuan.java	Tue Feb 21 20:27:17 2017 -0700
@@ -112,4 +112,8 @@
 		tbl.rawClear();
 	}
 
+	public static int hash_value(LuanTable tbl) throws LuanException {
+		return tbl.hashValue();
+	}
+
 }