class XDR::Enum

Attributes

name[R]
value[R]

Public Class Methods

from_name(name) click to toggle source
# 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
new(name, value) click to toggle source
# 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
read(io) click to toggle source
# 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) click to toggle source
# File lib/xdr/enum.rb, line 25
def self.valid?(val)
  val.is_a?(self)
end
write(val, io) click to toggle source
# 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

Public Instance Methods

to_s() click to toggle source
# File lib/xdr/enum.rb, line 45
def to_s
  "#{self.class.name}.#{@name}(#{@value})"
end