| /* | 
 |  * 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. | 
 |  */ | 
 |  | 
 | # | 
 | # 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. | 
 | # | 
 |  | 
 | namespace rb SpecNamespace | 
 |  | 
 | struct Hello { | 
 |   1: string greeting = "hello world" | 
 | } | 
 |  | 
 | enum SomeEnum { | 
 |   ONE | 
 |   TWO | 
 | } | 
 |  | 
 | struct StructWithSomeEnum { | 
 |   1: SomeEnum some_enum; | 
 | } | 
 |  | 
 | union TestUnion { | 
 |   /** | 
 |    * A doc string | 
 |    */ | 
 |   1: string string_field; | 
 |   2: i32 i32_field; | 
 |   3: i32 other_i32_field; | 
 |   4: SomeEnum enum_field; | 
 |   5: binary binary_field; | 
 | } | 
 |  | 
 | struct Foo { | 
 |   1: i32 simple = 53, | 
 |   2: string words = "words", | 
 |   3: Hello hello = {'greeting' : "hello, world!"}, | 
 |   4: list<i32> ints = [1, 2, 2, 3], | 
 |   5: map<i32, map<string, double>> complex, | 
 |   6: set<i16> shorts = [5, 17, 239], | 
 |   7: optional string opt_string | 
 |   8: bool my_bool | 
 | } | 
 |  | 
 | struct Foo2 { | 
 |   1: binary my_binary | 
 | } | 
 |  | 
 | struct BoolStruct { | 
 |   1: bool yesno = 1 | 
 | } | 
 |  | 
 | struct SimpleList { | 
 |   1: list<bool> bools, | 
 |   2: list<byte> bytes, | 
 |   3: list<i16> i16s, | 
 |   4: list<i32> i32s, | 
 |   5: list<i64> i64s, | 
 |   6: list<double> doubles, | 
 |   7: list<string> strings, | 
 |   8: list<map<i16, i16>> maps, | 
 |   9: list<list<i16>> lists, | 
 |   10: list<set<i16>> sets, | 
 |   11: list<Hello> hellos | 
 | } | 
 |  | 
 | exception Xception { | 
 |   1: string message, | 
 |   2: i32 code = 1 | 
 | } | 
 |  | 
 | service NonblockingService { | 
 |   Hello greeting(1:bool english) | 
 |   bool block() | 
 |   oneway void unblock(1:i32 n) | 
 |   oneway void shutdown() | 
 |   void sleep(1:double seconds) | 
 | } | 
 |  | 
 | union My_union { | 
 |   1: bool im_true, | 
 |   2: byte a_bite, | 
 |   3: i16 integer16, | 
 |   4: i32 integer32, | 
 |   5: i64 integer64, | 
 |   6: double double_precision, | 
 |   7: string some_characters, | 
 |   8: i32 other_i32 | 
 |   9: SomeEnum some_enum; | 
 |   10: map<SomeEnum, list<SomeEnum>> my_map; | 
 | } | 
 |  | 
 | struct Struct_with_union { | 
 |   1: My_union fun_union | 
 |   2: i32 integer32 | 
 |   3: string some_characters | 
 | } | 
 |  | 
 | struct StructWithEnumMap { | 
 |   1: map<SomeEnum, list<SomeEnum>> my_map; | 
 | } | 
 |  | 
 | # Nested lists | 
 | struct NestedListInList { | 
 |   1: list<list<byte>> value | 
 | } | 
 |  | 
 | struct NestedListInSet { | 
 |   1: set<list<byte>> value | 
 | } | 
 |  | 
 | struct NestedListInMapKey { | 
 |   1: map<list<byte>, byte> value | 
 | } | 
 |  | 
 | struct NestedListInMapValue { | 
 |   1: map<byte, list<byte>> value | 
 | } | 
 |  | 
 | # Nested sets | 
 | struct NestedSetInList { | 
 |   1: list<set<byte>> value | 
 | } | 
 |  | 
 | struct NestedSetInSet { | 
 |   1: set<set<byte>> value | 
 | } | 
 |  | 
 | struct NestedSetInMapKey { | 
 |   1: map<set<byte>, byte> value | 
 | } | 
 |  | 
 | struct NestedSetInMapValue { | 
 |   1: map<byte, set<byte>> value | 
 | } | 
 |  | 
 | # Nested maps | 
 | struct NestedMapInList { | 
 |   1: list<map<byte, byte>> value | 
 | } | 
 |  | 
 | struct NestedMapInSet { | 
 |   1: set<map<byte, byte>> value | 
 | } | 
 |  | 
 | struct NestedMapInMapKey { | 
 |   2: map<map<byte, byte>, byte> value | 
 | } | 
 |  | 
 | struct NestedMapInMapValue { | 
 |   2: map<byte, map<byte, byte>> value | 
 | } |