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