package com.jsoniter.spi;
import com.jsoniter.JsonIterator;
import java.io.IOException;
public interface Decoder {
/**
* Customized decoder to read values from iterator
*
* @param iter the iterator instance
* @return the value to set
* @throws IOException when reading from iterator triggered error
*/
Object decode(JsonIterator iter) throws IOException;
abstract class BooleanDecoder implements Decoder {
@Override
public Object decode(JsonIterator iter) throws IOException {
return Boolean.valueOf(decodeBoolean(iter));
}
public abstract boolean decodeBoolean(JsonIterator iter) throws IOException;
}
abstract class ShortDecoder implements Decoder {
@Override
public Object decode(JsonIterator iter) throws IOException {
return Short.valueOf(decodeShort(iter));
}
public abstract short decodeShort(JsonIterator iter) throws IOException;
}
abstract class IntDecoder implements Decoder {
@Override
public Object decode(JsonIterator iter) throws IOException {
return Integer.valueOf(decodeInt(iter));
}
public abstract int decodeInt(JsonIterator iter) throws IOException;
}
abstract class LongDecoder implements Decoder {
@Override
public Object decode(JsonIterator iter) throws IOException {
return Long.valueOf(decodeLong(iter));
}
public abstract long decodeLong(JsonIterator iter) throws IOException;
}
abstract class FloatDecoder implements Decoder {
@Override
public Object decode(JsonIterator iter) throws IOException {
return Float.valueOf(decodeFloat(iter));
}
public abstract float decodeFloat(JsonIterator iter) throws IOException;
}
abstract class DoubleDecoder implements Decoder {
@Override
public Object decode(JsonIterator iter) throws IOException {
return Double.valueOf(decodeDouble(iter));
}
public abstract double decodeDouble(JsonIterator iter) throws IOException;
}
}