当前位置: 首页>>代码示例>>Java>>正文


Java LuaConversion类代码示例

本文整理汇总了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);
	}
}
 
开发者ID:RedTroop,项目名称:Cubes_2,代码行数:17,代码来源:LuaMethod.java

示例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;
		}
	});
}
 
开发者ID:RedTroop,项目名称:Cubes_2,代码行数:23,代码来源:LuaClass.java

示例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);
	}
}
 
开发者ID:RedTroop,项目名称:Cubes_2,代码行数:23,代码来源:LuaGeneration.java

示例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;
}
 
开发者ID:RedTroop,项目名称:Cubes_2,代码行数:20,代码来源:LuaGeneration.java

示例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;
}
 
开发者ID:RedTroop,项目名称:Cubes,代码行数:20,代码来源:LuaGeneration.java

示例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;
		}
	});
}
 
开发者ID:RedTroop,项目名称:Cubes_2,代码行数:36,代码来源:LuaClass.java

示例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);
}
 
开发者ID:RedTroop,项目名称:Cubes_2,代码行数:41,代码来源:LuaClass.java

示例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);
}
 
开发者ID:RedTroop,项目名称:Cubes_2,代码行数:13,代码来源:CubesLua.java

示例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());
	}
}
 
开发者ID:RedTroop,项目名称:Cubes_2,代码行数:14,代码来源:CubesLua.java


注:本文中的ethanjones.cubes.core.lua.convert.LuaConversion类示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。