本文整理汇总了Java中ethanjones.cubes.core.lua.convert.LuaConversion类的典型用法代码示例。如果您正苦于以下问题:Java LuaConversion类的具体用法?Java LuaConversion怎么用?Java LuaConversion使用的例子?那么, 这里精选的类代码示例或许可以为您提供帮助。
LuaConversion类属于ethanjones.cubes.core.lua.convert包,在下文中一共展示了LuaConversion类的9个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。
示例1: invokeFor
import ethanjones.cubes.core.lua.convert.LuaConversion; //导入依赖的package包/类
private void invokeFor(Class[] parameters, Object[] param, Varargs args, Method method) {
try {
for (int i = 0; i < parameters.length; i++) {
param[i] = LuaConversion.convertToJava(parameters[i], args.arg(i + 1));
}
} catch (Exception ignored) {
continue;
}
try {
Object invoke = method.invoke(null, param);
return LuaConversion.convertToLua(invoke);
} catch (Exception e) {
throw new LuaError(e);
}
}
示例2: luaTable1
import ethanjones.cubes.core.lua.convert.LuaConversion; //导入依赖的package包/类
private void luaTable1() {
LuaTable metatable = new LuaTable();
metatable.rawset("__index", new TwoArgFunction() {
@Override
public LuaValue call(LuaValue arg1, LuaValue arg2) {
String s = arg2.tojstring();
try {
Field field = c.getField(s);
int modifiers = field.getModifiers();
if (Modifier.isStatic(modifiers) && field.getAnnotation(LuaExclude.class) == null) {
return LuaConversion.convertToLua(field.get(null));
}
} catch (Exception ignored) {
}
luaTableTry( s);
error("No such field or method: " + s);
return null;
}
});
}
示例3: method
import ethanjones.cubes.core.lua.convert.LuaConversion; //导入依赖的package包/类
@RuntimeType
public Object method(@Origin Method aMethod, @This Object o, @AllArguments Object[] objects,
@SuperCall Callable supercall) {
LuaValue value = delegations.get(aMethod.getName());
if (value.isnil()) {
try {
return supercall.call();
} catch (Exception e) {
throw new DynamicDelegationError("Supercall threw exception - no delegation supplied", e);
}
}
if (value.isfunction()) {
LuaFunction function = value.checkfunction();
LuaValue[] parameters = convertParamsToLua(o, objects, supercall);
Varargs invoke = function.invoke(parameters);
if (aMethod.getReturnType() == Void.class || invoke.narg() == 0)
return null;
return LuaConversion.convertToJava(aMethod.getReturnType(), invoke.checkvalue(1));
} else {
return LuaConversion.convertToJava(aMethod.getReturnType(), value);
}
}
示例4: convertParamsToLua
import ethanjones.cubes.core.lua.convert.LuaConversion; //导入依赖的package包/类
public static LuaValue[] convertParamsToLua(Object instance, Object[] objects, final Callable supercall) {
LuaValue[] parameters = new LuaValue[objects.length + 2];
parameters[0] = LuaConversion.convertToLua(instance);
for (int i = 0; i < objects.length; i++) {
parameters[i + 1] = LuaConversion.convertToLua(objects[i]);
}
parameters[parameters.length - 1] = new VarArgFunction() {
@Override
public Varargs invoke(Varargs args) {
try {
Object o = supercall.call();
return LuaConversion.convertToLua(o);
} catch (Exception e) {
throw new DynamicDelegationError("Supercall threw exception - called from supplied delegation", e);
}
}
};
return parameters;
}
示例5: convertParamsToLua
import ethanjones.cubes.core.lua.convert.LuaConversion; //导入依赖的package包/类
public static LuaValue[] convertParamsToLua(Object instance, Object[] objects, final Callable supercall) {
LuaValue[] parameters = new LuaValue[objects.length + 2];
parameters[0] = LuaConversion.convertToLua(instance);
for (int i = 0; i < objects.length; i++) {
parameters[i + 1] = LuaConversion.convertToLua(objects[i]);
}
parameters[parameters.length - 1] = new VarArgFunction() {
@Override
public Varargs invoke(Varargs args) {
try {
Object o = supercall.call();
return LuaConversion.convertToLua(o);
} catch (Exception e) {
throw new DynamicDelegationError("Supercall threw exception - called from supplied delegation", e);
}
}
};
return parameters;
}
示例6: luaTable3
import ethanjones.cubes.core.lua.convert.LuaConversion; //导入依赖的package包/类
private void luaTable3() {
metatable.rawset("__call", new VarArgFunction() {
@Override
public Varargs invoke(Varargs args) {
Constructor[] constructors = c.getConstructors();
if (constructors.length == 0)
error("No constructors");
for (Constructor constructor : constructors) {
if (constructor.getAnnotation(LuaExclude.class) != null)
continue;
Class[] parameters = constructor.getParameterTypes();
if (parameters.length + 1 != args.narg())
continue;
Object[] param = new Object[parameters.length];
for (int i = 0; i < parameters.length; i++) {
try {
param[i] = LuaConversion.convertToJava(parameters[i], args.arg(i + 2));
} catch (Exception ignored) {
continue;
}
}
try {
return LuaConversion.convertToLua(constructor.newInstance(param));
} catch (Exception e) {
throw new LuaError(e);
}
}
argerror(Arrays.toString(constructors));
return null;
}
});
}
示例7: LuaClass
import ethanjones.cubes.core.lua.convert.LuaConversion; //导入依赖的package包/类
public LuaClass(final Class c) {
super(new Object());
this.c = c;
luaTable1();
metatable.rawset("__newindex", new ThreeArgFunction() {
@Override
public LuaValue call(LuaValue arg1, LuaValue arg2, LuaValue arg3) {
String s = arg2.tojstring();
try {
Field field = c.getField(s);
int modifiers = field.getModifiers();
if (Modifier.isStatic(modifiers) && !Modifier.isFinal(modifiers)
&& field.getAnnotation(LuaExclude.class) == null) {
Class<?> type = field.getType();
Object o = LuaConversion.convertToJava(type, arg3);
field.set(null, o);
return NIL;
}
} catch (Exception e) {
if (e instanceof ConversionError)
throw (ConversionError) e;
}
error("No such field: " + s);
return null;
}
});
luaTable3();
metatable.rawset("__tostring", new ZeroArgFunction() {
@Override
public LuaValue call() {
return LuaValue.valueOf("[JClass: " + LuaClass.this.c.getName() + "]");
}
});
metatable.rawset("__metatable", LuaValue.FALSE);
setmetatable(metatable);
}
示例8: GlobalIf2
import ethanjones.cubes.core.lua.convert.LuaConversion; //导入依赖的package包/类
private LuaConversion GlobalIf2(LiaValue args) {
if (args.narg() <= 1 || (args.narg() == 2 && args.arg1().isnil()))
throw new LuaError("Invalid extend arguments: " + args.toString());
LuaTable delegations = args.arg(args.narg()).checktable();
Class extend = args.arg1().isnil() ? Object.class : convertToClass(args.arg1());
Class[] inherit = new Class[args.narg() - 2];
for (int i = 0; i < inherit.length; i++) {
inherit[i] = convertToClass(args.arg(i + 2));
}
Class c = LuaGeneration.extendClass(extend, delegations, inherit);
return LuaConversion.convertToLua(c);
}
示例9: GlobalIf3
import ethanjones.cubes.core.lua.convert.LuaConversion; //导入依赖的package包/类
private LuaConversion GlobalIf3(LuaValue args) {
if (args.narg() == 1) {
Log.info(tostring.call(args.arg1()).strvalue().tojstring());
} else {
StringBuilder out = new StringBuilder();
for (int i = 1, n = args.narg(); i <= n; i++) {
if (i > 1)
out.append("\t");
out.append(tostring.call(args.arg(i)).strvalue().tojstring());
}
Log.info(out.toString());
}
}