Mercurial Hosting > luan
comparison src/luan/LuaTable.java @ 46:a443637829c1
remove LuaNumber
git-svn-id: https://luan-java.googlecode.com/svn/trunk@47 21e917c8-12df-6dd8-5cb6-c86387c605b9
author | fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9> |
---|---|
date | Thu, 27 Dec 2012 01:48:36 +0000 |
parents | 57054fa43189 |
children | 659c7139e903 |
comparison
equal
deleted
inserted
replaced
45:b1b14d09fc98 | 46:a443637829c1 |
---|---|
24 @Override public String toString() { | 24 @Override public String toString() { |
25 return "table: " + Integer.toHexString(hashCode()); | 25 return "table: " + Integer.toHexString(hashCode()); |
26 } | 26 } |
27 | 27 |
28 public Object get(Object key) { | 28 public Object get(Object key) { |
29 if( list != null && key instanceof LuaNumber ) { | 29 if( list != null ) { |
30 LuaNumber ln = (LuaNumber)key; | 30 Integer iT = Lua.asInteger(key); |
31 int i = (int)ln.n; | 31 if( iT != null ) { |
32 if( i == ln.n ) { | 32 int i = iT - 1; |
33 i--; | |
34 if( i>=0 && i<list.size() ) | 33 if( i>=0 && i<list.size() ) |
35 return list.get(i); | 34 return list.get(i); |
36 } | 35 } |
37 } | 36 } |
38 if( map==null ) | 37 if( map==null ) |
39 return null; | 38 return null; |
40 return map.get(key); | 39 return map.get(key); |
41 } | 40 } |
42 | 41 |
43 public Object put(Object key,Object val) { | 42 public Object put(Object key,Object val) { |
44 if( key instanceof LuaNumber ) { | 43 Integer iT = Lua.asInteger(key); |
45 LuaNumber ln = (LuaNumber)key; | 44 if( iT != null ) { |
46 int i = (int)ln.n; | 45 int i = iT - 1; |
47 if( i == ln.n ) { | 46 if( list == null && i == 0 ) |
48 i--; | 47 list = new ArrayList<Object>(); |
49 if( list == null && i == 0 ) | 48 if( list != null ) { |
50 list = new ArrayList<Object>(); | 49 if( i == list.size() ) { |
51 if( list != null ) { | 50 if( val != null ) { |
52 if( i == list.size() ) { | 51 list.add(val); |
53 if( val != null ) { | 52 if( map != null ) { |
54 list.add(val); | 53 while(true) { |
55 if( map != null ) { | 54 Object v = map.remove(Double.valueOf(list.size()+1)); |
56 while(true) { | 55 if( v == null ) |
57 Object v = map.remove(LuaNumber.of(list.size()+1)); | 56 break; |
58 if( v == null ) | 57 list.add(v); |
59 break; | |
60 list.add(v); | |
61 } | |
62 } | 58 } |
63 } | 59 } |
64 return null; | 60 } |
65 } else if( i>=0 && i<list.size() ) { | 61 return null; |
66 Object old = list.get(i); | 62 } else if( i>=0 && i<list.size() ) { |
67 list.set(i,val); | 63 Object old = list.get(i); |
68 if( val == null && i == list.size()-1 ) { | 64 list.set(i,val); |
69 while( i>=0 && list.get(i)==null ) { | 65 if( val == null && i == list.size()-1 ) { |
70 list.remove(i--); | 66 while( i>=0 && list.get(i)==null ) { |
71 } | 67 list.remove(i--); |
72 } | 68 } |
73 return old; | |
74 } | 69 } |
70 return old; | |
75 } | 71 } |
76 } | 72 } |
77 } | 73 } |
78 if( map==null ) { | 74 if( map==null ) { |
79 map = new HashMap<Object,Object>(); | 75 map = new HashMap<Object,Object>(); |
76 } | |
77 if( key instanceof Number && !(key instanceof Double) ) { | |
78 Number n = (Number)key; | |
79 key = Double.valueOf(n.doubleValue()); | |
80 } | 80 } |
81 if( val == null ) { | 81 if( val == null ) { |
82 return map.remove(key); | 82 return map.remove(key); |
83 } else { | 83 } else { |
84 return map.put(key,val); | 84 return map.put(key,val); |
142 return new Iterator<Map.Entry<Object,Object>>() { | 142 return new Iterator<Map.Entry<Object,Object>>() { |
143 public boolean hasNext() { | 143 public boolean hasNext() { |
144 return iter.hasNext(); | 144 return iter.hasNext(); |
145 } | 145 } |
146 public Map.Entry<Object,Object> next() { | 146 public Map.Entry<Object,Object> next() { |
147 LuaNumber key = LuaNumber.of(iter.nextIndex()+1); | 147 Double key = Double.valueOf(iter.nextIndex()+1); |
148 return new MapEntry(key,iter.next()); | 148 return new MapEntry(key,iter.next()); |
149 } | 149 } |
150 public void remove() { | 150 public void remove() { |
151 throw new UnsupportedOperationException(); | 151 throw new UnsupportedOperationException(); |
152 } | 152 } |