| /* |
| * $Id: Converter.java 38 2012-01-04 22:44:15Z andre@naef.com $ |
| * See LICENSE.txt for license terms. |
| */ |
| |
| package com.naef.jnlua; |
| |
| /** |
| * Converts between Lua values and Java objects. |
| */ |
| public interface Converter { |
| /** |
| * Returns the type distance between a Lua value and a formal Java type. |
| * Distances are comparable for the same Lua value only. If a Lua value |
| * cannot be converted to the specified formal type, the method returns |
| * <code>Integer.MAX_VALUE</code>. |
| * |
| * @param luaState |
| * the Lua state |
| * @param index |
| * the stack index containing the value |
| * @param formalType |
| * the formal Java type |
| * @return the type distance, or <code>Integer.MAX_VALUE</code> if the |
| * conversion is not supported |
| */ |
| public int getTypeDistance(LuaState luaState, int index, Class<?> formalType); |
| |
| /** |
| * Converts a Lua value to a Java object of the specified formal type. |
| * |
| * <p> |
| * If the Lua value is <code>nil</code>, the method returns |
| * <code>null</code>. |
| * </p> |
| * |
| * @param luaState |
| * the Lua state |
| * @param index |
| * the stack index containing the value |
| * @return the Java object, or <code>null</code> |
| * @param formalType |
| * the formal Java type |
| * @throws ClassCastException |
| * if the conversion is not possible |
| */ |
| public <T> T convertLuaValue(LuaState luaState, int index, |
| Class<T> formalType); |
| |
| /** |
| * Converts a Java object to a Lua value and pushes that value on the stack. |
| * |
| * <p> |
| * If the object is <code>null</code>, the method pushes <code>nil</code>. |
| * </p> |
| * |
| * @param luaState |
| * the Lua state |
| * @param object |
| * the Java object, or <code>null</code> |
| */ |
| public void convertJavaObject(LuaState luaState, Object object); |
| } |