module AMQ::Pack

def self.pack_int16_big_endian(short)

def self.pack_int16_big_endian(short)
  [long_long].pack(INT16)
end

def self.pack_int16_big_endian(short)

def self.pack_int16_big_endian(short)
  result = [long_long].pack(INT16)
  result.bytes.to_a.reverse.map(&:chr).join
end

def self.pack_uint64_big_endian(long_long)

def self.pack_uint64_big_endian(long_long)
  [long_long].pack(UINT64)
end

def self.pack_uint64_big_endian(long_long)

def self.pack_uint64_big_endian(long_long)
  result = [long_long].pack(UINT64)
  result.bytes.to_a.reverse.map(&:chr).join
end

def self.unpack_int16_big_endian(data)

def self.unpack_int16_big_endian(data)
  data.unpack(INT16)
end

def self.unpack_int16_big_endian(data)

def self.unpack_int16_big_endian(data)
  value = data.bytes.to_a.map(&:chr).join.unpack(UINT16_BE)[0]
  [(value & ~(1 << 15)) - (value & (1 << 15))]
end

def self.unpack_uint64_big_endian(data)

def self.unpack_uint64_big_endian(data)
  data.unpack(UINT64)
end

def self.unpack_uint64_big_endian(data)

def self.unpack_uint64_big_endian(data)
  data = data.bytes.to_a.reverse.map(&:chr).join
  data.unpack(UINT64)
end