Allow CStructs to be created with nil members
This commit is contained in:
@@ -96,7 +96,7 @@ class CStruct
|
|||||||
if h.instance_of?(self.class)
|
if h.instance_of?(self.class)
|
||||||
@attrs = h.to_hash.dup
|
@attrs = h.to_hash.dup
|
||||||
else
|
else
|
||||||
@attrs = self.class::DEFAULTS.dup
|
@attrs = {}
|
||||||
h.each { |k,v| self[k] = v } if h
|
h.each { |k,v| self[k] = v } if h
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@@ -153,7 +153,7 @@ class CStruct
|
|||||||
self::DEFAULTS[name] = default
|
self::DEFAULTS[name] = default
|
||||||
|
|
||||||
define_method name do
|
define_method name do
|
||||||
@attrs.fetch name
|
@attrs[name]
|
||||||
end
|
end
|
||||||
define_method "#{name}=" do |val|
|
define_method "#{name}=" do |val|
|
||||||
@attrs.store name, val
|
@attrs.store name, val
|
||||||
@@ -170,7 +170,7 @@ class CStruct
|
|||||||
|
|
||||||
# Returns the packed binary representation of this structure
|
# Returns the packed binary representation of this structure
|
||||||
def to_str
|
def to_str
|
||||||
self.class::FIELDS.map { |key| self[key] }.pack(self.class::FORMAT)
|
self.class::FIELDS.map { |key| self[key] || self.class::DEFAULTS[key] }.pack(self.class::FORMAT)
|
||||||
end
|
end
|
||||||
|
|
||||||
def inspect
|
def inspect
|
||||||
|
@@ -40,7 +40,7 @@ module Netlink
|
|||||||
end
|
end
|
||||||
|
|
||||||
# Convert an interface index into name string, or nil if the
|
# Convert an interface index into name string, or nil if the
|
||||||
# index is nil or empty string. Raises exception for unknown values.
|
# index is nil or 0. Raises exception for unknown values.
|
||||||
#
|
#
|
||||||
# nl = Netlink::Route::Socket.new
|
# nl = Netlink::Route::Socket.new
|
||||||
# nl.routes(:family=>Socket::AF_INET) do |route|
|
# nl.routes(:family=>Socket::AF_INET) do |route|
|
||||||
|
Reference in New Issue
Block a user