lib/protobuf/field/sfixed32_field.rb



require 'protobuf/field/int32_field'

module Protobuf
  module Field
    class Sfixed32Field < Int32Field
      def wire_type
        ::Protobuf::WireType::FIXED32
      end

      def decode(bytes)
        value  = bytes.unpack('V').first
        value -= 0x1_0000_0000 if (value & 0x8000_0000).nonzero?
        value
      end

      def encode(value)
        [value].pack('V')
      end
    end
  end
end