| /* | |
| * $Id: JavaReflector.java 38 2012-01-04 22:44:15Z andre@naef.com $ | |
| * See LICENSE.txt for license terms. | |
| */ | |
| package com.naef.jnlua; | |
| /** | |
| * Reflects Java objects for access from Lua. | |
| * | |
| * <p> | |
| * The interface can be implemented to provide a generic Java reflector that is | |
| * then configured in a Lua state. It can also be implemented by individual Java | |
| * classes to provide class-specific Java reflection. If an object implements | |
| * the Java reflector interface, its own Java reflector is queried first for a | |
| * requested metamethod. Only if the metamethod requested is not supported, the | |
| * Java reflector configured in the Lua state is queried. | |
| * </p> | |
| */ | |
| public interface JavaReflector { | |
| /** | |
| * Returns the metamethod implementation of this Java reflector for the | |
| * specified metamethod. If this reflector does not support the metamethod, | |
| * the method returns <code>null</code>. | |
| * | |
| * @param metamethod | |
| * the metamethod | |
| * @return the implementation, or <code>null</code> if this Java reflector | |
| * does not support the metamethod | |
| */ | |
| public JavaFunction getMetamethod(Metamethod metamethod); | |
| // -- Nested types | |
| /** | |
| * Lua metamethod. | |
| */ | |
| public enum Metamethod { | |
| /** | |
| * <code>__index</code> metamethod. | |
| */ | |
| INDEX, | |
| /** | |
| * <code>__newindex</code> metamethod. | |
| */ | |
| NEWINDEX, | |
| /** | |
| * <code>__len</code> metamethod. | |
| */ | |
| LEN, | |
| /** | |
| * <code>__eq</code> metamethod. | |
| */ | |
| EQ, | |
| /** | |
| * <code>__lt</code> metamethod. | |
| */ | |
| LT, | |
| /** | |
| * <code>__le</code> metamethod. | |
| */ | |
| LE, | |
| /** | |
| * <code>__unm</code> metamethod. | |
| */ | |
| UNM, | |
| /** | |
| * <code>__add</code> metamethod. | |
| */ | |
| ADD, | |
| /** | |
| * <code>__sub</code> metamethod. | |
| */ | |
| SUB, | |
| /** | |
| * <code>__mul</code> metamethod. | |
| */ | |
| MUL, | |
| /** | |
| * <code>__div</code> metamethod. | |
| */ | |
| DIV, | |
| /** | |
| * <code>__mod</code> metamethod. | |
| */ | |
| MOD, | |
| /** | |
| * <code>__pow</code> metamethod. | |
| */ | |
| POW, | |
| /** | |
| * <code>__concat</code> metamethod. | |
| */ | |
| CONCAT, | |
| /** | |
| * <code>__call</code> metamethod. | |
| */ | |
| CALL, | |
| /** | |
| * <code>__tostring</code> metamethod. | |
| */ | |
| TOSTRING, | |
| /** | |
| * <code>__pairs</code> metamethod, | |
| */ | |
| PAIRS, | |
| /** | |
| * <code>__ipairs</code> metamethod, | |
| */ | |
| IPAIRS, | |
| /** | |
| * <code>__javafields</code> metamethod. | |
| */ | |
| JAVAFIELDS, | |
| /** | |
| * <code>__javamethods</code> metamethod. | |
| */ | |
| JAVAMETHODS, | |
| /** | |
| * <code>__javaproperties</code> metamethod. | |
| */ | |
| JAVAPROPERTIES; | |
| // -- Operations | |
| /** | |
| * Returns the Lua metamethod name. | |
| * | |
| * @return the metamethod name | |
| */ | |
| public String getMetamethodName() { | |
| return "__" + toString().toLowerCase(); | |
| } | |
| }; | |
| } |