class FMOD::Core::Guid

Structure describing a globally unique identifier.

Public Class Methods

new(address = nil) click to toggle source

@param address [Pointer, Integer, String, nil] The address in memory

where the structure will be created from. If no address is given, new
memory will be allocated.
Calls superclass method
# File lib/fmod/core/guid.rb, line 14
def initialize(address = nil)
  types = [TYPE_INT, TYPE_SHORT, TYPE_SHORT, [TYPE_CHAR, 8]]
  members = [:data1, :data2, :data3, :data4]
  super(address, types, members)
end

Public Instance Methods

==(obj) click to toggle source

@return [Boolean] true if objects are equal, otherwise false. @param obj [Object] The object to compare.

# File lib/fmod/core/guid.rb, line 64
def ==(obj)
  eql?(obj)
end
data1() click to toggle source

@return [Integer] the first 8 hexadecimal digits of the GUID.

# File lib/fmod/core/guid.rb, line 22
def data1
  [self[:data1]].pack('l').unpack1('L')
end
data2() click to toggle source

@return [Integer] the first group of 4 hexadecimal digits.

# File lib/fmod/core/guid.rb, line 28
def data2
  [self[:data2]].pack('s').unpack1('S')
end
data3() click to toggle source

@return [Integer] the second group of 4 hexadecimal digits.

# File lib/fmod/core/guid.rb, line 34
def data3
  [self[:data3]].pack('s').unpack1('S')
end
data4() click to toggle source

Array of 8 bytes. The first 2 bytes contain the third group of 4 hexadecimal digits. The remaining 6 bytes contain the final 12.

hexadecimal digits. @return [Array<Integer>] the last part if the GUID.

# File lib/fmod/core/guid.rb, line 44
def data4
  self[:data4].pack('c*').unpack('C*')
end
eql?(obj) click to toggle source

@return [Boolean] true if objects are equal, otherwise false. @param obj [Object] The object to compare.

# File lib/fmod/core/guid.rb, line 51
def eql?(obj)
  if obj.is_a?(Guid)
    return false unless data1 == obj.data1
    return false unless data2 == obj.data2
    return false unless data3 == obj.data3
    return data4 == obj.data4
  end
  to_s.tr('-', '').casecmp(obj.to_s.tr('-', '')).zero?
end
to_s() click to toggle source

@return [String] the string representation of the GUID.

# File lib/fmod/core/guid.rb, line 70
def to_s
  d4 = data4
  last = d4[2, 6].map { |byte| "%02X" % byte }.join
  "%08X-%04X-%04X-%02X%02X-#{last}" % [data1, data2, data3, d4[0], d4[1]]
end