| /* |
| * $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(); |
| } |
| }; |
| } |