/* This file is part of the db4o object database http://www.db4o.com
Copyright (C) 2004 - 2011 Versant Corporation http://www.versant.com
db4o is free software; you can redistribute it and/or modify it under
the terms of version 3 of the GNU General Public License as published
by the Free Software Foundation.
db4o is distributed in the hope that it will be useful, but WITHOUT ANY
WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
for more details.
You should have received a copy of the GNU General Public License along
with this program. If not, see http://www.gnu.org/licenses/. */
package com.db4o.internal.marshall;
import java.util.*;
import com.db4o.*;
import com.db4o.internal.*;
public class PrimitiveMarshaller0 extends PrimitiveMarshaller {
public boolean useNormalClassRead(){
return true;
}
public Date readDate(ByteArrayBuffer bytes) {
final long value = bytes.readLong();
if (value == Long.MAX_VALUE) {
return MarshallingConstants0.NULL_DATE;
}
return new Date(value);
}
public Object readInteger(ByteArrayBuffer bytes) {
final int value = bytes.readInt();
if (value == Integer.MAX_VALUE) {
return null;
}
return new Integer(value);
}
public Object readFloat(ByteArrayBuffer bytes) {
Float value = unmarshallFloat(bytes);
if (value.isNaN()) {
return null;
}
return value;
}
public Object readDouble(ByteArrayBuffer buffer) {
Double value = unmarshalDouble(buffer);
if (value.isNaN()) {
return null;
}
return value;
}
public Object readLong(ByteArrayBuffer buffer) {
long value = buffer.readLong();
if (value == Long.MAX_VALUE) {
return null;
}
return new Long(value);
}
public Object readShort(ByteArrayBuffer buffer) {
short value = unmarshallShort(buffer);
if (value == Short.MAX_VALUE) {
return null;
}
return new Short(value);
}
public static Double unmarshalDouble(ByteArrayBuffer buffer) {
return new Double(Platform4.longToDouble(buffer.readLong()));
}
public static Float unmarshallFloat(ByteArrayBuffer buffer) {
return new Float(Float.intBitsToFloat(buffer.readInt()));
}
public static short unmarshallShort(ByteArrayBuffer buffer){
int ret = 0;
if (Deploy.debug){
buffer.readBegin(Const4.YAPSHORT);
}
for (int i = 0; i < Const4.SHORT_BYTES; i++){
ret = (ret << 8) + (buffer._buffer[buffer._offset++] & 0xff);
}
if (Deploy.debug){
buffer.readEnd();
}
return (short)ret;
}
}