/* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */ package com.wentch.redkale.convert.ext; import com.wentch.redkale.convert.Reader; import com.wentch.redkale.convert.SimpledCoder; import com.wentch.redkale.convert.Writer; /** * * @author zhangjx * @param * @param */ public final class ShortArraySimpledCoder extends SimpledCoder { public static final ShortArraySimpledCoder instance = new ShortArraySimpledCoder(); @Override public void convertTo(W out, short[] values) { if (values == null) { out.writeNull(); return; } out.writeArrayB(values.length); boolean flag = false; for (short v : values) { if (flag) out.writeArrayMark(); out.writeShort(v); flag = true; } out.writeArrayE(); } @Override public short[] convertFrom(R in) { int len = in.readArrayB(); if (len == Reader.SIGN_NULL) { return null; } else if (len == Reader.SIGN_NOLENGTH) { int size = 0; short[] data = new short[8]; while (in.hasNext()) { if (size >= data.length) { short[] newdata = new short[data.length + 4]; System.arraycopy(data, 0, newdata, 0, size); data = newdata; } data[size++] = in.readShort(); } in.readArrayE(); short[] newdata = new short[size]; System.arraycopy(data, 0, newdata, 0, size); return newdata; } else { short[] values = new short[len]; for (int i = 0; i < values.length; i++) { values[i] = in.readShort(); } in.readArrayE(); return values; } } }