blob: 7d743195337f1e996adc55dce6b901981926b4ae [file] [log] [blame]
package edu.uci.ics.asterix.dataflow.data.nontagged.serde;
import java.io.DataInput;
import java.io.DataOutput;
import java.io.IOException;
import edu.uci.ics.asterix.om.base.IAObject;
import edu.uci.ics.asterix.om.types.ATypeTag;
import edu.uci.ics.asterix.om.types.EnumDeserializer;
import edu.uci.ics.asterix.om.types.IAType;
import edu.uci.ics.hyracks.api.exceptions.HyracksDataException;
public final class SerializerDeserializerUtil {
public static void writeIntToByteArray(byte[] array, int value, int offset) {
array[offset] = (byte) (0xff & (value >> 24));
array[offset + 1] = (byte) (0xff & (value >> 16));
array[offset + 2] = (byte) (0xff & (value >> 8));
array[offset + 3] = (byte) (0xff & value);
}
public static void writeShortToByteArray(byte[] array, short value, int offset) {
array[offset] = (byte) (0xff & (value >> 8));
array[offset + 1] = (byte) (0xff & value);
}
public static int readIntFromByteArray(byte[] array) {
int value = 0;
for (int i = 0; i < 4; i++) {
int shift = (3 - i) * 8;
value += (array[i] & 0x000000FF) << shift;
}
return value;
}
public static short readShortFromByteArray(byte[] array) {
short value = 0;
for (int i = 0; i < 2; i++) {
int shift = (1 - i) * 8;
value += (array[i] & 0x000000FF) << shift;
}
return value;
}
public static void serializeTag(IAObject instance, DataOutput out) throws HyracksDataException {
IAType t = instance.getType();
ATypeTag tag = t.getTypeTag();
try {
out.writeByte(tag.serialize());
} catch (IOException e) {
throw new HyracksDataException(e);
}
}
public static ATypeTag deserializeTag(DataInput in) throws HyracksDataException {
try {
return EnumDeserializer.ATYPETAGDESERIALIZER.deserialize(in.readByte());
} catch (IOException e) {
throw new HyracksDataException(e);
}
}
}