Mercurial Hosting > luan
comparison src/luan/lib/JavaLib.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 | 64ecb7a3aad7 |
comparison
equal
deleted
inserted
replaced
45:b1b14d09fc98 | 46:a443637829c1 |
---|---|
9 import java.util.Map; | 9 import java.util.Map; |
10 import java.util.HashMap; | 10 import java.util.HashMap; |
11 import java.util.List; | 11 import java.util.List; |
12 import java.util.ArrayList; | 12 import java.util.ArrayList; |
13 import java.util.Iterator; | 13 import java.util.Iterator; |
14 import luan.LuaNumber; | 14 import luan.Lua; |
15 import luan.LuaState; | 15 import luan.LuaState; |
16 import luan.LuaTable; | 16 import luan.LuaTable; |
17 import luan.MetatableGetter; | 17 import luan.MetatableGetter; |
18 import luan.LuaException; | 18 import luan.LuaException; |
19 import luan.LuaFunction; | 19 import luan.LuaFunction; |
90 Class cls = obj.getClass(); | 90 Class cls = obj.getClass(); |
91 if( cls.isArray() ) { | 91 if( cls.isArray() ) { |
92 if( "length".equals(key) ) { | 92 if( "length".equals(key) ) { |
93 return Array.getLength(obj); | 93 return Array.getLength(obj); |
94 } | 94 } |
95 if( key instanceof LuaNumber ) { | 95 Integer i = Lua.asInteger(key); |
96 LuaNumber n = (LuaNumber)key; | 96 if( i != null ) { |
97 double d = n.value(); | 97 return Array.get(obj,i); |
98 int i = (int)d; | |
99 if( d==i ) { | |
100 return Array.get(obj,i); | |
101 } | |
102 } | 98 } |
103 throw new LuaException(lua,LuaElement.JAVA,"invalid index for java array: "+key); | 99 throw new LuaException(lua,LuaElement.JAVA,"invalid index for java array: "+key); |
104 } | 100 } |
105 if( key instanceof String ) { | 101 if( key instanceof String ) { |
106 String name = (String)key; | 102 String name = (String)key; |
120 try { | 116 try { |
121 if( members.size()==1 ) { | 117 if( members.size()==1 ) { |
122 Member member = members.get(0); | 118 Member member = members.get(0); |
123 if( member instanceof Field ) { | 119 if( member instanceof Field ) { |
124 Field field = (Field)member; | 120 Field field = (Field)member; |
125 Object value = field.get(obj); | 121 return field.get(obj); |
126 if( value instanceof Number ) { | |
127 Number n = (Number)value; | |
128 value = LuaNumber.of(n); | |
129 } | |
130 return value; | |
131 } else { | 122 } else { |
132 Method method = (Method)member; | 123 Method method = (Method)member; |
133 return new LuaJavaFunction(method,obj); | 124 return new LuaJavaFunction(method,obj); |
134 } | 125 } |
135 } else { | 126 } else { |