Mercurial Hosting > luan
diff 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 |
line wrap: on
line diff
--- a/core/src/luan/LuanJavaFunction.java Thu Jul 03 18:03:53 2014 +0000 +++ b/core/src/luan/LuanJavaFunction.java Thu Jul 03 18:36:46 2014 +0000 @@ -11,9 +11,9 @@ import java.util.Arrays; -public final class LuanJavaFunction extends LuanFunction { +public final class LuanJavaFunction extends LuanFunction implements DeepCloneable<LuanJavaFunction> { private final JavaMethod method; - private final Object obj; + private Object obj; private final RtnConverter rtnConverter; private final boolean takesLuaState; private final ArgConverter[] argConverters; @@ -41,6 +41,22 @@ } } + private LuanJavaFunction(LuanJavaFunction f) { + this.method = f.method; + this.rtnConverter = f.rtnConverter; + this.takesLuaState = f.takesLuaState; + this.argConverters = f.argConverters; + this.varArgCls = f.varArgCls; + } + + @Override public LuanJavaFunction shallowClone() { + return obj==null ? this : new LuanJavaFunction(this); + } + + @Override public void deepenClone(LuanJavaFunction clone,DeepCloner cloner) { + clone.obj = cloner.get(obj); + } + @Override public String toString() { return "java-function: " + method; }