SingleSerializer.cs 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. #if !NO_RUNTIME
  2. using System;
  3. using ProtoBuf.Meta;
  4. namespace ProtoBuf.Serializers
  5. {
  6. sealed class SingleSerializer : IProtoSerializer
  7. {
  8. static readonly Type expectedType = typeof(float);
  9. public Type ExpectedType { get { return expectedType; } }
  10. public SingleSerializer(TypeModel model)
  11. {
  12. }
  13. bool IProtoSerializer.RequiresOldValue => false;
  14. bool IProtoSerializer.ReturnsValue => true;
  15. public object Read(object value, ProtoReader source)
  16. {
  17. Helpers.DebugAssert(value == null); // since replaces
  18. return source.ReadSingle();
  19. }
  20. public void Write(object value, ProtoWriter dest)
  21. {
  22. ProtoWriter.WriteSingle((float)value, dest);
  23. }
  24. #if FEAT_COMPILER
  25. void IProtoSerializer.EmitWrite(Compiler.CompilerContext ctx, Compiler.Local valueFrom)
  26. {
  27. ctx.EmitBasicWrite("WriteSingle", valueFrom);
  28. }
  29. void IProtoSerializer.EmitRead(Compiler.CompilerContext ctx, Compiler.Local valueFrom)
  30. {
  31. ctx.EmitBasicRead("ReadSingle", ExpectedType);
  32. }
  33. #endif
  34. }
  35. }
  36. #endif