Mercurial Hosting > luan
comparison src/luan/LuaTable.java @ 35:e51906de0f11
implement metatables
git-svn-id: https://luan-java.googlecode.com/svn/trunk@36 21e917c8-12df-6dd8-5cb6-c86387c605b9
author | fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9> |
---|---|
date | Tue, 18 Dec 2012 07:05:58 +0000 |
parents | 9de9be530625 |
children | 57054fa43189 |
comparison
equal
deleted
inserted
replaced
34:0cdc1da466ee | 35:e51906de0f11 |
---|---|
5 import java.util.HashMap; | 5 import java.util.HashMap; |
6 | 6 |
7 | 7 |
8 public class LuaTable { | 8 public class LuaTable { |
9 private final Map<Object,Object> map = new HashMap<Object,Object>(); | 9 private final Map<Object,Object> map = new HashMap<Object,Object>(); |
10 private LuaTable metatable; | |
10 | 11 |
11 @Override public String toString() { | 12 @Override public String toString() { |
12 return "table: " + Integer.toHexString(hashCode()); | 13 return "table: " + Integer.toHexString(hashCode()); |
13 } | 14 } |
14 | 15 |
15 public Object get(Object key) { | 16 public Object get(Object key) { |
16 return map.get(key); | 17 return map.get(key); |
17 } | 18 } |
18 | 19 |
19 public void set(Object key,Object val) { | 20 public Object put(Object key,Object val) { |
20 if( val == null ) { | 21 if( val == null ) { |
21 map.remove(key); | 22 return map.remove(key); |
22 } else { | 23 } else { |
23 map.put(key,val); | 24 return map.put(key,val); |
24 } | 25 } |
25 } | 26 } |
26 | 27 |
27 public int length() { | 28 public int length() { |
28 int i = 0; | 29 int i = 0; |
34 | 35 |
35 public Iterator<Map.Entry<Object,Object>> iterator() { | 36 public Iterator<Map.Entry<Object,Object>> iterator() { |
36 return map.entrySet().iterator(); | 37 return map.entrySet().iterator(); |
37 } | 38 } |
38 | 39 |
40 public LuaTable getMetatable() { | |
41 return metatable; | |
42 } | |
43 | |
44 public void setMetatable(LuaTable metatable) { | |
45 this.metatable = metatable; | |
46 } | |
39 } | 47 } |