| # | 
 | # Licensed to the Apache Software Foundation (ASF) under one | 
 | # or more contributor license agreements. See the NOTICE file | 
 | # distributed with this work for additional information | 
 | # regarding copyright ownership. The ASF licenses this file | 
 | # to you under the Apache License, Version 2.0 (the | 
 | # "License"); you may not use this file except in compliance | 
 | # with the License. You may obtain a copy of the License at | 
 | # | 
 | #   http://www.apache.org/licenses/LICENSE-2.0 | 
 | # | 
 | # Unless required by applicable law or agreed to in writing, | 
 | # software distributed under the License is distributed on an | 
 | # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY | 
 | # KIND, either express or implied. See the License for the | 
 | # specific language governing permissions and limitations | 
 | # under the License. | 
 | # | 
 |  | 
 | require 'thrift' | 
 |  | 
 | module Fixtures | 
 |   module Structs | 
 |     class OneBool | 
 |       include Thrift::Struct | 
 |       attr_accessor :bool | 
 |       FIELDS = { | 
 |         1 => {:type => Thrift::Types::BOOL, :name => 'bool'} | 
 |       } | 
 |  | 
 |       def validate | 
 |       end | 
 |     end | 
 |      | 
 |     class OneByte | 
 |       include Thrift::Struct | 
 |       attr_accessor :byte | 
 |       FIELDS = { | 
 |         1 => {:type => Thrift::Types::BYTE, :name => 'byte'} | 
 |       } | 
 |  | 
 |       def validate | 
 |       end | 
 |     end | 
 |      | 
 |     class OneI16 | 
 |       include Thrift::Struct | 
 |       attr_accessor :i16 | 
 |       FIELDS = { | 
 |         1 => {:type => Thrift::Types::I16, :name => 'i16'} | 
 |       } | 
 |  | 
 |       def validate | 
 |       end | 
 |     end | 
 |      | 
 |     class OneI32 | 
 |       include Thrift::Struct | 
 |       attr_accessor :i32 | 
 |       FIELDS = { | 
 |         1 => {:type => Thrift::Types::I32, :name => 'i32'} | 
 |       } | 
 |  | 
 |       def validate | 
 |       end | 
 |     end | 
 |      | 
 |     class OneI64 | 
 |       include Thrift::Struct | 
 |       attr_accessor :i64 | 
 |       FIELDS = { | 
 |         1 => {:type => Thrift::Types::I64, :name => 'i64'} | 
 |       } | 
 |  | 
 |       def validate | 
 |       end | 
 |     end | 
 |      | 
 |     class OneDouble | 
 |       include Thrift::Struct | 
 |       attr_accessor :double | 
 |       FIELDS = { | 
 |         1 => {:type => Thrift::Types::DOUBLE, :name => 'double'} | 
 |       } | 
 |  | 
 |       def validate | 
 |       end | 
 |     end | 
 |      | 
 |     class OneString | 
 |       include Thrift::Struct | 
 |       attr_accessor :string | 
 |       FIELDS = { | 
 |         1 => {:type => Thrift::Types::STRING, :name => 'string'} | 
 |       } | 
 |  | 
 |       def validate | 
 |       end | 
 |     end | 
 |      | 
 |     class OneMap | 
 |       include Thrift::Struct | 
 |       attr_accessor :map | 
 |       FIELDS = { | 
 |         1 => {:type => Thrift::Types::MAP, :name => 'map', :key => {:type => Thrift::Types::STRING}, :value => {:type => Thrift::Types::STRING}} | 
 |       } | 
 |  | 
 |       def validate | 
 |       end | 
 |     end | 
 |      | 
 |     class NestedMap | 
 |       include Thrift::Struct | 
 |       attr_accessor :map | 
 |       FIELDS = { | 
 |         0 => {:type => Thrift::Types::MAP, :name => 'map', :key => {:type => Thrift::Types::I32}, :value => {:type => Thrift::Types::MAP, :key => {:type => Thrift::Types::I32}, :value => {:type => Thrift::Types::I32}}} | 
 |       } | 
 |  | 
 |       def validate | 
 |       end | 
 |     end | 
 |      | 
 |     class OneList | 
 |       include Thrift::Struct | 
 |       attr_accessor :list | 
 |       FIELDS = { | 
 |         1 => {:type => Thrift::Types::LIST, :name => 'list', :element => {:type => Thrift::Types::STRING}} | 
 |       } | 
 |  | 
 |       def validate | 
 |       end | 
 |     end | 
 |      | 
 |     class NestedList | 
 |       include Thrift::Struct | 
 |       attr_accessor :list | 
 |       FIELDS = { | 
 |         0 => {:type => Thrift::Types::LIST, :name => 'list', :element => {:type => Thrift::Types::LIST, :element => { :type => Thrift::Types::I32 } } } | 
 |       } | 
 |  | 
 |       def validate | 
 |       end | 
 |     end | 
 |      | 
 |     class OneSet | 
 |       include Thrift::Struct | 
 |       attr_accessor :set | 
 |       FIELDS = { | 
 |         1 => {:type => Thrift::Types::SET, :name => 'set', :element => {:type => Thrift::Types::STRING}} | 
 |       } | 
 |  | 
 |       def validate | 
 |       end | 
 |     end | 
 |      | 
 |     class NestedSet | 
 |       include Thrift::Struct | 
 |       attr_accessor :set | 
 |       FIELDS = { | 
 |         1 => {:type => Thrift::Types::SET, :name => 'set', :element => {:type => Thrift::Types::SET, :element => { :type => Thrift::Types::STRING } }} | 
 |       } | 
 |  | 
 |       def validate | 
 |       end | 
 |     end | 
 |      | 
 |     # struct OneOfEach { | 
 |     #   1: bool im_true, | 
 |     #   2: bool im_false, | 
 |     #   3: byte a_bite, | 
 |     #   4: i16 integer16, | 
 |     #   5: i32 integer32, | 
 |     #   6: i64 integer64, | 
 |     #   7: double double_precision, | 
 |     #   8: string some_characters, | 
 |     #   9: string zomg_unicode, | 
 |     #   10: bool what_who, | 
 |     #   11: binary base64, | 
 |     # } | 
 |     class OneOfEach | 
 |       include Thrift::Struct | 
 |       attr_accessor :im_true, :im_false, :a_bite, :integer16, :integer32, :integer64, :double_precision, :some_characters, :zomg_unicode, :what_who, :base64 | 
 |       FIELDS = { | 
 |         1 => {:type => Thrift::Types::BOOL, :name => 'im_true'}, | 
 |         2 => {:type => Thrift::Types::BOOL, :name => 'im_false'}, | 
 |         3 => {:type => Thrift::Types::BYTE, :name => 'a_bite'}, | 
 |         4 => {:type => Thrift::Types::I16, :name => 'integer16'}, | 
 |         5 => {:type => Thrift::Types::I32, :name => 'integer32'}, | 
 |         6 => {:type => Thrift::Types::I64, :name => 'integer64'}, | 
 |         7 => {:type => Thrift::Types::DOUBLE, :name => 'double_precision'}, | 
 |         8 => {:type => Thrift::Types::STRING, :name => 'some_characters'}, | 
 |         9 => {:type => Thrift::Types::STRING, :name => 'zomg_unicode'}, | 
 |         10 => {:type => Thrift::Types::BOOL, :name => 'what_who'}, | 
 |         11 => {:type => Thrift::Types::STRING, :name => 'base64'} | 
 |       } | 
 |  | 
 |       # Added for assert_equal | 
 |       def ==(other) | 
 |         [:im_true, :im_false, :a_bite, :integer16, :integer32, :integer64, :double_precision, :some_characters, :zomg_unicode, :what_who, :base64].each do |f| | 
 |           var = "@#{f}" | 
 |           return false if instance_variable_get(var) != other.instance_variable_get(var) | 
 |         end | 
 |         true | 
 |       end | 
 |  | 
 |       def validate | 
 |       end | 
 |     end | 
 |  | 
 |     # struct Nested1 { | 
 |     #   1: list<OneOfEach> a_list | 
 |     #   2: map<i32, OneOfEach> i32_map | 
 |     #   3: map<i64, OneOfEach> i64_map | 
 |     #   4: map<double, OneOfEach> dbl_map | 
 |     #   5: map<string, OneOfEach> str_map | 
 |     # } | 
 |     class Nested1 | 
 |       include Thrift::Struct | 
 |       attr_accessor :a_list, :i32_map, :i64_map, :dbl_map, :str_map | 
 |       FIELDS = { | 
 |         1 => {:type => Thrift::Types::LIST, :name => 'a_list', :element => {:type => Thrift::Types::STRUCT, :class => OneOfEach}}, | 
 |         2 => {:type => Thrift::Types::MAP, :name => 'i32_map', :key => {:type => Thrift::Types::I32}, :value => {:type => Thrift::Types::STRUCT, :class => OneOfEach}}, | 
 |         3 => {:type => Thrift::Types::MAP, :name => 'i64_map', :key => {:type => Thrift::Types::I64}, :value => {:type => Thrift::Types::STRUCT, :class => OneOfEach}}, | 
 |         4 => {:type => Thrift::Types::MAP, :name => 'dbl_map', :key => {:type => Thrift::Types::DOUBLE}, :value => {:type => Thrift::Types::STRUCT, :class => OneOfEach}}, | 
 |         5 => {:type => Thrift::Types::MAP, :name => 'str_map', :key => {:type => Thrift::Types::STRING}, :value => {:type => Thrift::Types::STRUCT, :class => OneOfEach}} | 
 |       } | 
 |  | 
 |       def validate | 
 |       end | 
 |     end | 
 |  | 
 |     # struct Nested2 { | 
 |     #   1: list<Nested1> a_list | 
 |     #   2: map<i32, Nested1> i32_map | 
 |     #   3: map<i64, Nested1> i64_map | 
 |     #   4: map<double, Nested1> dbl_map | 
 |     #   5: map<string, Nested1> str_map | 
 |     # } | 
 |     class Nested2 | 
 |       include Thrift::Struct | 
 |       attr_accessor :a_list, :i32_map, :i64_map, :dbl_map, :str_map | 
 |       FIELDS = { | 
 |         1 => {:type => Thrift::Types::LIST, :name => 'a_list', :element => {:type => Thrift::Types::STRUCT, :class => Nested1}}, | 
 |         2 => {:type => Thrift::Types::MAP, :name => 'i32_map', :key => {:type => Thrift::Types::I32}, :value => {:type => Thrift::Types::STRUCT, :class => Nested1}}, | 
 |         3 => {:type => Thrift::Types::MAP, :name => 'i64_map', :key => {:type => Thrift::Types::I64}, :value => {:type => Thrift::Types::STRUCT, :class => Nested1}}, | 
 |         4 => {:type => Thrift::Types::MAP, :name => 'dbl_map', :key => {:type => Thrift::Types::DOUBLE}, :value => {:type => Thrift::Types::STRUCT, :class => Nested1}}, | 
 |         5 => {:type => Thrift::Types::MAP, :name => 'str_map', :key => {:type => Thrift::Types::STRING}, :value => {:type => Thrift::Types::STRUCT, :class => Nested1}} | 
 |       } | 
 |  | 
 |       def validate | 
 |       end | 
 |     end | 
 |  | 
 |     # struct Nested3 { | 
 |     #   1: list<Nested2> a_list | 
 |     #   2: map<i32, Nested2> i32_map | 
 |     #   3: map<i64, Nested2> i64_map | 
 |     #   4: map<double, Nested2> dbl_map | 
 |     #   5: map<string, Nested2> str_map | 
 |     # } | 
 |     class Nested3 | 
 |       include Thrift::Struct | 
 |       attr_accessor :a_list, :i32_map, :i64_map, :dbl_map, :str_map | 
 |       FIELDS = { | 
 |         1 => {:type => Thrift::Types::LIST, :name => 'a_list', :element => {:type => Thrift::Types::STRUCT, :class => Nested2}}, | 
 |         2 => {:type => Thrift::Types::MAP, :name => 'i32_map', :key => {:type => Thrift::Types::I32}, :value => {:type => Thrift::Types::STRUCT, :class => Nested2}}, | 
 |         3 => {:type => Thrift::Types::MAP, :name => 'i64_map', :key => {:type => Thrift::Types::I64}, :value => {:type => Thrift::Types::STRUCT, :class => Nested2}}, | 
 |         4 => {:type => Thrift::Types::MAP, :name => 'dbl_map', :key => {:type => Thrift::Types::DOUBLE}, :value => {:type => Thrift::Types::STRUCT, :class => Nested2}}, | 
 |         5 => {:type => Thrift::Types::MAP, :name => 'str_map', :key => {:type => Thrift::Types::STRING}, :value => {:type => Thrift::Types::STRUCT, :class => Nested2}} | 
 |       } | 
 |  | 
 |       def validate | 
 |       end | 
 |     end | 
 |  | 
 |     # struct Nested4 { | 
 |     #   1: list<Nested3> a_list | 
 |     #   2: map<i32, Nested3> i32_map | 
 |     #   3: map<i64, Nested3> i64_map | 
 |     #   4: map<double, Nested3> dbl_map | 
 |     #   5: map<string, Nested3> str_map | 
 |     # } | 
 |     class Nested4 | 
 |       include Thrift::Struct | 
 |       attr_accessor :a_list, :i32_map, :i64_map, :dbl_map, :str_map | 
 |       FIELDS = { | 
 |         1 => {:type => Thrift::Types::LIST, :name => 'a_list', :element => {:type => Thrift::Types::STRUCT, :class => Nested3}}, | 
 |         2 => {:type => Thrift::Types::MAP, :name => 'i32_map', :key => {:type => Thrift::Types::I32}, :value => {:type => Thrift::Types::STRUCT, :class => Nested3}}, | 
 |         3 => {:type => Thrift::Types::MAP, :name => 'i64_map', :key => {:type => Thrift::Types::I64}, :value => {:type => Thrift::Types::STRUCT, :class => Nested3}}, | 
 |         4 => {:type => Thrift::Types::MAP, :name => 'dbl_map', :key => {:type => Thrift::Types::DOUBLE}, :value => {:type => Thrift::Types::STRUCT, :class => Nested3}}, | 
 |         5 => {:type => Thrift::Types::MAP, :name => 'str_map', :key => {:type => Thrift::Types::STRING}, :value => {:type => Thrift::Types::STRUCT, :class => Nested3}} | 
 |       } | 
 |  | 
 |       def validate | 
 |       end | 
 |     end | 
 |   end | 
 | end |