SByteSerializer.cs 1.1 KB

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