package org.simantics.databoard.serialization.impl; import java.io.DataInput; import java.io.DataOutput; import java.io.IOException; import org.simantics.databoard.binding.FloatBinding; import org.simantics.databoard.binding.error.BindingException; import org.simantics.databoard.serialization.Serializer.NonRecursiveSerializer; public class FloatSerializer extends NonRecursiveSerializer { FloatBinding binding; public FloatSerializer(FloatBinding binding) {this.binding = binding;} @Override public Object deserialize(DataInput in) throws IOException { try { float value = in.readFloat(); return binding.create(value); } catch (BindingException e) { throw new IOException( e ); } } @Override public void deserializeTo(DataInput in, Object obj) throws IOException { try { binding.setValue(obj, in.readFloat()); } catch (BindingException e) { throw new IOException( e ); } } @Override public void skip(DataInput in) throws IOException { in.skipBytes(4); } @Override public void serialize(DataOutput out, Object obj) throws IOException { try { float value = binding.getValue_(obj); out.writeFloat(value); } catch (BindingException e) { throw new IOException( e ); } } @Override public Integer getConstantSize() { return 4; } @Override public int getSize(Object obj) { return 4; } @Override public int getMinSize() { return 4; } public float getFloat(DataInput in) throws IOException { return in.readFloat(); } public void putFloat(DataOutput out, float x) throws IOException { out.writeFloat(x); } }