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