Class: WindowsCOM::GUID

Inherits:
FFI::Struct
  • Object
show all
Includes:
FFIStructMemoryEquality
Defined in:
lib/windows_com/common.rb

Class Method Summary collapse

Instance Method Summary collapse

Methods included from FFIStructMemoryEquality

#==

Class Method Details

.[](str) ⇒ Object



123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
# File 'lib/windows_com/common.rb', line 123

def self.[](str)
  raise 'Bad GUID format' unless str =~ /^[0-9a-f]{8}-([0-9a-f]{4}-){3}[0-9a-f]{12}$/i

  guid = new

  guid[:Data1] = str[0, 8].to_i(16)
  guid[:Data2] = str[9, 4].to_i(16)
  guid[:Data3] = str[14, 4].to_i(16)
  guid[:Data4][0] = str[19, 2].to_i(16)
  guid[:Data4][1] = str[21, 2].to_i(16)
  str[24, 12].split('').each_slice(2).with_index { |a, i|
    guid[:Data4][i + 2] = a.join('').to_i(16)
  }

  guid
end

Instance Method Details

#to_sObject



140
141
142
143
144
145
# File 'lib/windows_com/common.rb', line 140

def to_s
  format '%08X-%04X-%04X-%02X%02X-%02X%02X%02X%02X%02X%02X',
    self[:Data1], self[:Data2], self[:Data3],
    self[:Data4][0], self[:Data4][1],
    self[:Data4][2], self[:Data4][3], self[:Data4][4], self[:Data4][5], self[:Data4][6], self[:Data4][7]
end