1// Copyright 2018 The Fuchsia Authors. All rights reserved. 2// Use of this source code is governed by a BSD-style license that can be 3// found in the LICENSE file. 4 5library fidl.examples.types; 6 7struct this_is_a_struct { 8 string s; 9}; 10 11union this_is_a_union { 12 string s; 13}; 14 15interface this_is_an_interface { 16 23: Copy(string s, uint32 count) -> (string s); 17}; 18 19struct interfaces_and_requests { 20 this_is_an_interface nonnullable_interface; 21 this_is_an_interface? nullable_interface; 22 request<this_is_an_interface> nonnullable_request; 23 request<this_is_an_interface>? nullable_request; 24}; 25 26struct primitive_types { 27 bool b; 28 int8 i8; 29 int16 i16; 30 int32 i32; 31 int64 i64; 32 uint8 u8; 33 uint16 u16; 34 uint32 u32; 35 uint64 u64; 36 float32 f32; 37 float64 f64; 38}; 39 40struct default_values { 41 bool b1 = true; 42 bool b2 = false; 43 int8 i8 = -23; 44 int16 i16 = 34; 45 int32 i32 = -34595; 46 int64 i64 = 3948038; 47 uint8 u8 = 0; 48 uint16 u16 = 348; 49 uint32 u32 = 9038; 50 uint64 u64 = 19835; 51 float32 f32 = 1.30; 52 float64 f64 = 0.0000054; 53 string s = "hello"; 54}; 55 56const uint32 arrays_size = 32; 57 58struct arrays { 59 array<bool>:1 b_0; 60 array<int8>:1 i8_0; 61 array<int16>:1 i16_0; 62 array<int32>:1 i32_0; 63 array<int64>:1 i64_0; 64 array<uint8>:1 u8_0; 65 array<uint16>:1 u16_0; 66 array<uint32>:1 u32_0; 67 array<uint64>:1 u64_0; 68 array<float32>:1 f32_0; 69 array<float64>:1 f64_0; 70 array<handle>:1 handle_0; 71 72 array<bool>:arrays_size b_1; 73 array<int8>:arrays_size i8_1; 74 array<int16>:arrays_size i16_1; 75 array<int32>:arrays_size i32_1; 76 array<int64>:arrays_size i64_1; 77 array<uint8>:arrays_size u8_1; 78 array<uint16>:arrays_size u16_1; 79 array<uint32>:arrays_size u32_1; 80 array<uint64>:arrays_size u64_1; 81 array<float32>:arrays_size f32_1; 82 array<float64>:arrays_size f64_1; 83 array<handle>:arrays_size handle_1; 84 85 array<array<bool>:4>:arrays_size b_2; 86 array<array<int8>:4>:arrays_size i8_2; 87 array<array<int16>:4>:arrays_size i16_2; 88 array<array<int32>:4>:arrays_size i32_2; 89 array<array<int64>:4>:arrays_size i64_2; 90 array<array<uint8>:4>:arrays_size u8_2; 91 array<array<uint16>:4>:arrays_size u16_2; 92 array<array<uint32>:4>:arrays_size u32_2; 93 array<array<uint64>:4>:arrays_size u64_2; 94 array<array<float32>:4>:arrays_size f32_2; 95 array<array<float64>:4>:arrays_size f64_2; 96 array<array<handle>:4>:arrays_size handle_2; 97}; 98 99const uint32 vectors_size = 32; 100 101struct vectors { 102 vector<bool> b_0; 103 vector<int8> i8_0; 104 vector<int16> i16_0; 105 vector<int32> i32_0; 106 vector<int64> i64_0; 107 vector<uint8> u8_0; 108 vector<uint16> u16_0; 109 vector<uint32> u32_0; 110 vector<uint64> u64_0; 111 vector<float32> f32_0; 112 vector<float64> f64_0; 113 vector<handle> handle_0; 114 115 vector<vector<bool>:4> b_1; 116 vector<vector<int8>:4> i8_1; 117 vector<vector<int16>:4> i16_1; 118 vector<vector<int32>:4> i32_1; 119 vector<vector<int64>:4> i64_1; 120 vector<vector<uint8>:4> u8_1; 121 vector<vector<uint16>:4> u16_1; 122 vector<vector<uint32>:4> u32_1; 123 vector<vector<uint64>:4> u64_1; 124 vector<vector<float32>:4> f32_1; 125 vector<vector<float64>:4> f64_1; 126 vector<vector<handle>:4> handle_1; 127 128 vector<bool>:1 b_sized_0; 129 vector<int8>:1 i8_sized_0; 130 vector<int16>:1 i16_sized_0; 131 vector<int32>:1 i32_sized_0; 132 vector<int64>:1 i64_sized_0; 133 vector<uint8>:1 u8_sized_0; 134 vector<uint16>:1 u16_sized_0; 135 vector<uint32>:1 u32_sized_0; 136 vector<uint64>:1 u64_sized_0; 137 vector<float32>:1 f32_sized_0; 138 vector<float64>:1 f64_sized_0; 139 vector<handle>:1 handle_sized_0; 140 141 vector<bool>:vectors_size b_sized_1; 142 vector<int8>:vectors_size i8_sized_1; 143 vector<int16>:vectors_size i16_sized_1; 144 vector<int32>:vectors_size i32_sized_1; 145 vector<int64>:vectors_size i64_sized_1; 146 vector<uint8>:vectors_size u8_sized_1; 147 vector<uint16>:vectors_size u16_sized_1; 148 vector<uint32>:vectors_size u32_sized_1; 149 vector<uint64>:vectors_size u64_sized_1; 150 vector<float32>:vectors_size f32_sized_1; 151 vector<float64>:vectors_size f64_sized_1; 152 vector<handle>:vectors_size handle_sized_1; 153 154 vector<vector<bool>:4>:vectors_size b_sized_2; 155 vector<vector<int8>:4>:vectors_size i8_sized_2; 156 vector<vector<int16>:4>:vectors_size i16_sized_2; 157 vector<vector<int32>:4>:vectors_size i32_sized_2; 158 vector<vector<int64>:4>:vectors_size i64_sized_2; 159 vector<vector<uint8>:4>:vectors_size u8_sized_2; 160 vector<vector<uint16>:4>:vectors_size u16_sized_2; 161 vector<vector<uint32>:4>:vectors_size u32_sized_2; 162 vector<vector<uint64>:4>:vectors_size u64_sized_2; 163 vector<vector<float32>:4>:vectors_size f32_sized_2; 164 vector<vector<float64>:4>:vectors_size f64_sized_2; 165 vector<vector<handle>:4>:vectors_size handle_sized_2; 166 167 vector<bool>:1? b_nullable_0; 168 vector<int8>:1? i8_nullable_0; 169 vector<int16>:1? i16_nullable_0; 170 vector<int32>:1? i32_nullable_0; 171 vector<int64>:1? i64_nullable_0; 172 vector<uint8>:1? u8_nullable_0; 173 vector<uint16>:1? u16_nullable_0; 174 vector<uint32>:1? u32_nullable_0; 175 vector<uint64>:1? u64_nullable_0; 176 vector<float32>:1? f32_nullable_0; 177 vector<float64>:1? f64_nullable_0; 178 vector<handle>:1? handle_nullable_0; 179 180 vector<vector<bool>:4>? b_nullable_1; 181 vector<vector<int8>:4>? i8_nullable_1; 182 vector<vector<int16>:4>? i16_nullable_1; 183 vector<vector<int32>:4>? i32_nullable_1; 184 vector<vector<int64>:4>? i64_nullable_1; 185 vector<vector<uint8>:4>? u8_nullable_1; 186 vector<vector<uint16>:4>? u16_nullable_1; 187 vector<vector<uint32>:4>? u32_nullable_1; 188 vector<vector<uint64>:4>? u64_nullable_1; 189 vector<vector<float32>:4>? f32_nullable_1; 190 vector<vector<float64>:4>? f64_nullable_1; 191 vector<vector<handle>:4>? handle_nullable_1; 192 193 vector<bool>:1? b_nullable_sized_0; 194 vector<int8>:1? i8_nullable_sized_0; 195 vector<int16>:1? i16_nullable_sized_0; 196 vector<int32>:1? i32_nullable_sized_0; 197 vector<int64>:1? i64_nullable_sized_0; 198 vector<uint8>:1? u8_nullable_sized_0; 199 vector<uint16>:1? u16_nullable_sized_0; 200 vector<uint32>:1? u32_nullable_sized_0; 201 vector<uint64>:1? u64_nullable_sized_0; 202 vector<float32>:1? f32_nullable_sized_0; 203 vector<float64>:1? f64_nullable_sized_0; 204 vector<handle>:1? handle_nullable_sized_0; 205 206 vector<bool>:vectors_size? b_nullable_sized_1; 207 vector<int8>:vectors_size? i8_nullable_sized_1; 208 vector<int16>:vectors_size? i16_nullable_sized_1; 209 vector<int32>:vectors_size? i32_nullable_sized_1; 210 vector<int64>:vectors_size? i64_nullable_sized_1; 211 vector<uint8>:vectors_size? u8_nullable_sized_1; 212 vector<uint16>:vectors_size? u16_nullable_sized_1; 213 vector<uint32>:vectors_size? u32_nullable_sized_1; 214 vector<uint64>:vectors_size? u64_nullable_sized_1; 215 vector<float32>:vectors_size? f32_nullable_sized_1; 216 vector<float64>:vectors_size? f64_nullable_sized_1; 217 vector<handle>:vectors_size? handle_nullable_sized_1; 218 219 vector<vector<bool>:4>:vectors_size? b_nullable_sized_2; 220 vector<vector<int8>:4>:vectors_size? i8_nullable_sized_2; 221 vector<vector<int16>:4>:vectors_size? i16_nullable_sized_2; 222 vector<vector<int32>:4>:vectors_size? i32_nullable_sized_2; 223 vector<vector<int64>:4>:vectors_size? i64_nullable_sized_2; 224 vector<vector<uint8>:4>:vectors_size? u8_nullable_sized_2; 225 vector<vector<uint16>:4>:vectors_size? u16_nullable_sized_2; 226 vector<vector<uint32>:4>:vectors_size? u32_nullable_sized_2; 227 vector<vector<uint64>:4>:vectors_size? u64_nullable_sized_2; 228 vector<vector<float32>:4>:vectors_size? f32_nullable_sized_2; 229 vector<vector<float64>:4>:vectors_size? f64_nullable_sized_2; 230 vector<vector<handle>:4>:vectors_size? handle_nullable_sized_2; 231}; 232 233[Awesome] 234struct handles { 235 handle handle_handle; 236 handle<process> process_handle; 237 handle<thread> thread_handle; 238 handle<vmo> vmo_handle; 239 handle<channel> channel_handle; 240 handle<event> event_handle; 241 handle<port> port_handle; 242 handle<interrupt> interrupt_handle; 243 handle<log> log_handle; 244 handle<socket> socket_handle; 245 handle<resource> resource_handle; 246 handle<eventpair> eventpair_handle; 247 handle<job> job_handle; 248 handle<vmar> vmar_handle; 249 handle<fifo> fifo_handle; 250 handle<guest> guest_handle; 251 handle<timer> timer_handle; 252 253 handle? nullable_handle_handle; 254 handle<process>? nullable_process_handle; 255 handle<thread>? nullable_thread_handle; 256 handle<vmo>? nullable_vmo_handle; 257 handle<channel>? nullable_channel_handle; 258 handle<event>? nullable_event_handle; 259 handle<port>? nullable_port_handle; 260 handle<interrupt>? nullable_interrupt_handle; 261 handle<log>? nullable_log_handle; 262 handle<socket>? nullable_socket_handle; 263 handle<resource>? nullable_resource_handle; 264 handle<eventpair>? nullable_eventpair_handle; 265 handle<job>? nullable_job_handle; 266 handle<vmar>? nullable_vmar_handle; 267 handle<fifo>? nullable_fifo_handle; 268 handle<guest>? nullable_guest_handle; 269 handle<timer>? nullable_timer_handle; 270}; 271 272const uint32 strings_size = 32; 273 274struct strings { 275 string s; 276 string? nullable_s; 277 string:4 size_0_s; 278 string:strings_size size_1_s; 279 string:4? nullable_size_0_s; 280 string:strings_size? nullable_size_1_s; 281}; 282 283enum default_enum { 284 x = 23; 285}; 286 287enum i8_enum : int8 { 288 x = 23; 289}; 290 291enum i16_enum : int16 { 292 x = 23; 293}; 294 295enum i32_enum : int32 { 296 x = 23; 297}; 298 299enum i64_enum : int64 { 300 x = 23; 301}; 302 303enum u8_enum : uint8 { 304 x = 23; 305}; 306 307enum u16_enum : uint16 { 308 x = 23; 309}; 310 311enum u32_enum : uint32 { 312 x = 23; 313}; 314 315enum u64_enum : uint64 { 316 x = 23; 317}; 318 319struct structs { 320 this_is_a_struct s; 321 this_is_a_struct? nullable_s; 322}; 323 324struct unions { 325 this_is_a_union s; 326 this_is_a_union? nullable_u; 327}; 328 329struct interfaces { 330 this_is_an_interface i; 331 this_is_an_interface? nullable_i; 332}; 333 334struct requests { 335 request<this_is_an_interface> r; 336 request<this_is_an_interface>? nullable_r; 337}; 338