Class: DhcpsApi::DHCP_OPTION_DATA

Inherits:
DHCPS_Struct
  • Object
show all
Defined in:
lib/dhcpsapi/data_structures.rb

Overview

typedef struct _DHCP_OPTION_DATA {

  DWORD                      NumElements;
  LPDHCP_OPTION_DATA_ELEMENT Elements;
} DHCP_OPTION_DATA, *LPDHCP_OPTION_DATA;

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from DHCPS_Struct

ruby_struct_attr

Methods included from RubyStructAttrHelpers

#dhcp_client_uid_to_mac, #ip_to_uint32, #mac_address_to_array_of_uint8, #to_string, #to_wchar_string, #uint32_to_ip, #wchar_string_length

Class Method Details

.from_array(type, array_of_data) ⇒ Object



221
222
223
224
225
# File 'lib/dhcpsapi/data_structures.rb', line 221

def self.from_array(type, array_of_data)
  to_return = new
  to_return.from_array(type, array_of_data)
  to_return
end

Instance Method Details

#as_ruby_structObject



245
246
247
248
249
# File 'lib/dhcpsapi/data_structures.rb', line 245

def as_ruby_struct
  0.upto(self[:num_elements]-1).inject([]) do |all, offset|
    all << DHCP_OPTION_DATA_ELEMENT.new(self[:elements] + DHCP_OPTION_DATA_ELEMENT.size*offset).as_ruby_struct
  end
end

#from_array(type, array_of_data) ⇒ Object



227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
# File 'lib/dhcpsapi/data_structures.rb', line 227

def from_array(type, array_of_data)
  if array_of_data.size == 0
    self[:num_elements] = 1
    self[:elements] = FFI::MemoryPointer.new(DHCP_OPTION_DATA_ELEMENT, 1)
    DHCP_OPTION_DATA_ELEMENT.new(self[:elements]).initialize_from_data(type, nil)
    return self
  end

  self[:num_elements] = array_of_data.size
  self[:elements] = FFI::MemoryPointer.new(DHCP_OPTION_DATA_ELEMENT, array_of_data.size)
  0.upto(array_of_data.size-1) do |i|
    element = DHCP_OPTION_DATA_ELEMENT.new(self[:elements] + DHCP_OPTION_DATA_ELEMENT.size*i)
    element.initialize_from_data(type, array_of_data[i])
  end

  self
end