// Path: src/main/java/uk/elementarysoftware/quickcsv/api/Field.java
// public interface Field {
// 
//     public ByteBuffer raw();
// 
//     public String asString();
//     
//     public double asDouble();
//     public byte asByte();
//     public char asChar();
//     public short asShort();
//     public int asInt();
//     public long asLong();
//     
//     public Integer asBoxedInt();
//     public Double asBoxedDouble();
// 
//     public boolean isEmpty();
// 
//     public Field clone();
// }
// 
// Path: src/main/java/uk/elementarysoftware/quickcsv/decoder/Decoder.java
// public class Decoder {
//     
//     private final uk.elementarysoftware.quickcsv.decoder.doubles.DoubleParser doubleParser;
//     private final Charset charset;
//     private final IntParser intParser;
//     private final LongParser longParser;
//     
//     public Decoder(Charset charset) {
//         this.charset = charset;
//         ParserFactory parserFactory = new ParserFactory();
//         this.doubleParser = parserFactory.getDoubleParser();
//         this.intParser = parserFactory.getIntParser();
//         this.longParser = parserFactory.getLongParser();
//     }
//     
//     public String decodeToString(byte[] buffer, int offset, int length) {
//         return new String(buffer, offset, length, charset);
//     }
//     
//     public double decodeToDouble(byte[] buffer, int offset, int length) {
//         if (length == 0) return 0.0;
//         return doubleParser.parse(buffer, offset, length);
//     }
//     
//     public int decodeToInt(byte[] buffer, int offset, int length) {
//         if (length == 0) return 0;
//         return intParser.parse(buffer, offset, length);
//     }
// 
//     public long decodeToLong(byte[] buffer, int offset, int length) {
//         if (length == 0) return 0L;
//         return longParser.parse(buffer, offset, length);
//     }
// 
//     public Charset getCharset() {
//         return charset;
//     }
// }


import java.nio.ByteBuffer;
import java.nio.charset.Charset;
import uk.elementarysoftware.quickcsv.api.Field;
import uk.elementarysoftware.quickcsv.decoder.Decoder;
package uk.elementarysoftware.quickcsv.parser;



public class ByteArrayField implements Field {
    
	public static final ByteArrayField EMPTY = new ByteArrayField(new byte[0], 0, 0, null);
	
// Path: src/main/java/uk/elementarysoftware/quickcsv/api/Field.java
// public interface Field {
// 
//     public ByteBuffer raw();
// 
//     public String asString();
//     
//     public double asDouble();
//     public byte asByte();
//     public char asChar();
//     public short asShort();
//     public int asInt();
//     public long asLong();
//     
//     public Integer asBoxedInt();
//     public Double asBoxedDouble();
// 
//     public boolean isEmpty();
// 
//     public Field clone();
// }
// 
// Path: src/main/java/uk/elementarysoftware/quickcsv/decoder/Decoder.java
// public class Decoder {
//     
//     private final uk.elementarysoftware.quickcsv.decoder.doubles.DoubleParser doubleParser;
//     private final Charset charset;
//     private final IntParser intParser;
//     private final LongParser longParser;
//     
//     public Decoder(Charset charset) {
//         this.charset = charset;
//         ParserFactory parserFactory = new ParserFactory();
//         this.doubleParser = parserFactory.getDoubleParser();
//         this.intParser = parserFactory.getIntParser();
//         this.longParser = parserFactory.getLongParser();
//     }
//     
//     public String decodeToString(byte[] buffer, int offset, int length) {
//         return new String(buffer, offset, length, charset);
//     }
//     
//     public double decodeToDouble(byte[] buffer, int offset, int length) {
//         if (length == 0) return 0.0;
//         return doubleParser.parse(buffer, offset, length);
//     }
//     
//     public int decodeToInt(byte[] buffer, int offset, int length) {
//         if (length == 0) return 0;
//         return intParser.parse(buffer, offset, length);
//     }
// 
//     public long decodeToLong(byte[] buffer, int offset, int length) {
//         if (length == 0) return 0L;
//         return longParser.parse(buffer, offset, length);
//     }
// 
//     public Charset getCharset() {
//         return charset;
//     }
// }


// Path: src/main/java/uk/elementarysoftware/quickcsv/parser/ByteArrayField.java
import java.nio.ByteBuffer;
import java.nio.charset.Charset;
import uk.elementarysoftware.quickcsv.api.Field;
import uk.elementarysoftware.quickcsv.decoder.Decoder;

package uk.elementarysoftware.quickcsv.parser;



public class ByteArrayField implements Field {
    
	public static final ByteArrayField EMPTY = new ByteArrayField(new byte[0], 0, 0, null);
	
    private final Decoder decoder;