package com.technofovea.hllib;
import com.sun.jna.FromNativeContext;
import com.sun.jna.ToNativeContext;
import com.sun.jna.TypeConverter;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
*
* @author Darien Hager
*/
class EnumConverter implements TypeConverter {
private static final Logger logger = LoggerFactory.getLogger(EnumConverter.class);
public Object fromNative(Object input, FromNativeContext context) {
Integer i = (Integer) input;
Class targetClass = context.getTargetType();
if (!JnaEnum.class.isAssignableFrom(targetClass)) {
return null;
}
Object[] enums = targetClass.getEnumConstants();
if (enums.length == 0) {
logger.error("Could not convert desired enum type (), no valid values are defined.",targetClass.getName());
return null;
}
JnaEnum instance = (JnaEnum) enums[0];
return instance.getForValue(i);
}
public Object toNative(Object input, ToNativeContext context) {
JnaEnum j = (JnaEnum) input;
return new Integer(j.getIntValue());
}
public Class nativeType() {
return Integer.class;
}
}