Class: XDR::Enum
Instance Attribute Summary collapse
Class Method Summary
collapse
Instance Method Summary
collapse
from_xdr, read, to_xdr, valid?, write
Methods included from DSL::Enum
member, seal
Constructor Details
#initialize(name, value) ⇒ Enum
Returns a new instance of Enum.
39
40
41
42
43
|
# File 'lib/xdr/enum.rb', line 39
def initialize(name, value)
raise ArgumentError, "#{self.class} is sealed" if self.sealed
@name = name
@value = value
end
|
Instance Attribute Details
#name ⇒ Object
Returns the value of attribute name.
36
37
38
|
# File 'lib/xdr/enum.rb', line 36
def name
@name
end
|
#value ⇒ Object
Returns the value of attribute value.
37
38
39
|
# File 'lib/xdr/enum.rb', line 37
def value
@value
end
|
Class Method Details
.from_name(name) ⇒ Object
29
30
31
32
33
34
|
# File 'lib/xdr/enum.rb', line 29
def self.from_name(name)
normalized = name.to_s.underscore
members[normalized].tap do |r|
raise XDR::EnumNameError, "#{name} is not a member of #{self.name}" if r.blank?
end
end
|
.read(io) ⇒ Object
18
19
20
21
22
23
|
# File 'lib/xdr/enum.rb', line 18
def self.read(io)
value = XDR::Int.read(io)
by_value[value].tap do |result|
raise XDR::EnumValueError, "Unknown #{name} member: #{value}" if result.blank?
end
end
|
.valid?(val) ⇒ Boolean
25
26
27
|
# File 'lib/xdr/enum.rb', line 25
def self.valid?(val)
val.is_a?(self)
end
|
.write(val, io) ⇒ Object
12
13
14
15
16
|
# File 'lib/xdr/enum.rb', line 12
def self.write(val, io)
raise XDR::WriteError, "Invalid enum value: #{val.inspect}" unless val.is_a?(self)
XDR::Int.write(val.value, io)
end
|
Instance Method Details
#to_s ⇒ Object
45
46
47
|
# File 'lib/xdr/enum.rb', line 45
def to_s
"#{self.class.name}.#{@name}(#{@value})"
end
|