class Xdrgen::AST::Definitions::EnumMember
Public Instance Methods
auto_value()
click to toggle source
# File lib/xdrgen/ast/definitions/enum_member.rb, line 22 def auto_value index = enum.members.index(self) if index == 0 0 else # use the previous members value + 1 enum.members[index - 1].value + 1 end end
defined_value()
click to toggle source
# File lib/xdrgen/ast/definitions/enum_member.rb, line 32 def defined_value return if value_n.terminal? case value_n.val when Constant value_n.val.value when Identifier namespace.find_enum_value(value_n.val.name).defined_value end end
enum()
click to toggle source
# File lib/xdrgen/ast/definitions/enum_member.rb, line 17 def enum find_ancestors(Enum).last end
value()
click to toggle source
# File lib/xdrgen/ast/definitions/enum_member.rb, line 9 def value unsigned_value = defined_value || auto_value # enums are signed in xdr, so... # convert to twos complement value [unsigned_value].pack("l>").unpack("l>").first end