Method: Thrift::Union.field_accessor

Defined in:
lib/thrift/union.rb

.field_accessor(klass, field_info) ⇒ Object



98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
# File 'lib/thrift/union.rb', line 98

def self.field_accessor(klass, field_info)
  klass.send :define_method, field_info[:name] do
    if field_info[:name].to_sym == @setfield
      @value
    else 
      raise RuntimeError, "#{field_info[:name]} is not union's set field."
    end
  end

  klass.send :define_method, "#{field_info[:name]}=" do |value|
    Thrift.check_type(value, field_info, field_info[:name]) if Thrift.type_checking
    @setfield = field_info[:name].to_sym
    @value = value
  end
end