Mercurial Hosting > luan
comparison core/src/luan/LuanJavaFunction.java @ 197:4c96cb73dd93
fix metatable cloning
git-svn-id: https://luan-java.googlecode.com/svn/trunk@198 21e917c8-12df-6dd8-5cb6-c86387c605b9
author | fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9> |
---|---|
date | Thu, 03 Jul 2014 18:36:46 +0000 |
parents | 3dcb0f9bee82 |
children | 239c8d650028 |
comparison
equal
deleted
inserted
replaced
196:be0275bda373 | 197:4c96cb73dd93 |
---|---|
9 import java.util.HashMap; | 9 import java.util.HashMap; |
10 import java.util.Set; | 10 import java.util.Set; |
11 import java.util.Arrays; | 11 import java.util.Arrays; |
12 | 12 |
13 | 13 |
14 public final class LuanJavaFunction extends LuanFunction { | 14 public final class LuanJavaFunction extends LuanFunction implements DeepCloneable<LuanJavaFunction> { |
15 private final JavaMethod method; | 15 private final JavaMethod method; |
16 private final Object obj; | 16 private Object obj; |
17 private final RtnConverter rtnConverter; | 17 private final RtnConverter rtnConverter; |
18 private final boolean takesLuaState; | 18 private final boolean takesLuaState; |
19 private final ArgConverter[] argConverters; | 19 private final ArgConverter[] argConverters; |
20 private final Class<?> varArgCls; | 20 private final Class<?> varArgCls; |
21 | 21 |
37 Class<?>[] paramTypes = method.getParameterTypes(); | 37 Class<?>[] paramTypes = method.getParameterTypes(); |
38 this.varArgCls = paramTypes[paramTypes.length-1].getComponentType(); | 38 this.varArgCls = paramTypes[paramTypes.length-1].getComponentType(); |
39 } else { | 39 } else { |
40 this.varArgCls = null; | 40 this.varArgCls = null; |
41 } | 41 } |
42 } | |
43 | |
44 private LuanJavaFunction(LuanJavaFunction f) { | |
45 this.method = f.method; | |
46 this.rtnConverter = f.rtnConverter; | |
47 this.takesLuaState = f.takesLuaState; | |
48 this.argConverters = f.argConverters; | |
49 this.varArgCls = f.varArgCls; | |
50 } | |
51 | |
52 @Override public LuanJavaFunction shallowClone() { | |
53 return obj==null ? this : new LuanJavaFunction(this); | |
54 } | |
55 | |
56 @Override public void deepenClone(LuanJavaFunction clone,DeepCloner cloner) { | |
57 clone.obj = cloner.get(obj); | |
42 } | 58 } |
43 | 59 |
44 @Override public String toString() { | 60 @Override public String toString() { |
45 return "java-function: " + method; | 61 return "java-function: " + method; |
46 } | 62 } |