| // Copyright 2019 The Fuchsia Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| library banjo.examples.protocolarray; |
| |
| // TODO(surajmalhotra): Async for arrays. |
| // TODO(surajmalhotra): Reference for arrays. |
| |
| using zx; |
| |
| @transport("Banjo") |
| @banjo_layout("ddk-protocol") |
| protocol Array { |
| Bool(struct { |
| b array<bool, 1>; |
| }) -> (struct { |
| b array<bool, 1>; |
| }); |
| Int8(struct { |
| i8 array<int8, 1>; |
| }) -> (struct { |
| i8 array<int8, 1>; |
| }); |
| Int16(struct { |
| i16 array<int16, 1>; |
| }) -> (struct { |
| i16 array<int16, 1>; |
| }); |
| Int32(struct { |
| i32 array<int32, 1>; |
| }) -> (struct { |
| i32 array<int32, 1>; |
| }); |
| Int64(struct { |
| i64 array<int64, 1>; |
| }) -> (struct { |
| i64 array<int64, 1>; |
| }); |
| Uint8(struct { |
| u8 array<uint8, 1>; |
| }) -> (struct { |
| u8 array<uint8, 1>; |
| }); |
| Uint16(struct { |
| u16 array<uint16, 1>; |
| }) -> (struct { |
| u16 array<uint16, 1>; |
| }); |
| Uint32(struct { |
| u32 array<uint32, 1>; |
| }) -> (struct { |
| u32 array<uint32, 1>; |
| }); |
| Uint64(struct { |
| u64 array<uint64, 1>; |
| }) -> (struct { |
| u64 array<uint64, 1>; |
| }); |
| Float32(struct { |
| f32 array<float32, 1>; |
| }) -> (struct { |
| f32 array<float32, 1>; |
| }); |
| Float64(struct { |
| u64 array<float64, 1>; |
| }) -> (struct { |
| f64 array<float64, 1>; |
| }); |
| Handle(resource struct { |
| u64 array<zx.handle, 1>; |
| }) -> (resource struct { |
| f64 array<zx.handle, 1>; |
| }); |
| }; |
| |
| const array_size uint32 = 32; |
| |
| @transport("Banjo") |
| @banjo_layout("ddk-protocol") |
| protocol Array2 { |
| Bool(struct { |
| b array<bool, array_size>; |
| }) -> (struct { |
| b array<bool, array_size>; |
| }); |
| Int8(struct { |
| i8 array<int8, array_size>; |
| }) -> (struct { |
| i8 array<int8, array_size>; |
| }); |
| Int16(struct { |
| i16 array<int16, array_size>; |
| }) -> (struct { |
| i16 array<int16, array_size>; |
| }); |
| Int32(struct { |
| i32 array<int32, array_size>; |
| }) -> (struct { |
| i32 array<int32, array_size>; |
| }); |
| Int64(struct { |
| i64 array<int64, array_size>; |
| }) -> (struct { |
| i64 array<int64, array_size>; |
| }); |
| Uint8(struct { |
| u8 array<uint8, array_size>; |
| }) -> (struct { |
| u8 array<uint8, array_size>; |
| }); |
| Uint16(struct { |
| u16 array<uint16, array_size>; |
| }) -> (struct { |
| u16 array<uint16, array_size>; |
| }); |
| Uint32(struct { |
| u32 array<uint32, array_size>; |
| }) -> (struct { |
| u32 array<uint32, array_size>; |
| }); |
| Uint64(struct { |
| u64 array<uint64, array_size>; |
| }) -> (struct { |
| u64 array<uint64, array_size>; |
| }); |
| Float32(struct { |
| f32 array<float32, array_size>; |
| }) -> (struct { |
| f32 array<float32, array_size>; |
| }); |
| Float64(struct { |
| u64 array<float64, array_size>; |
| }) -> (struct { |
| f64 array<float64, array_size>; |
| }); |
| Handle(resource struct { |
| u64 array<zx.handle, array_size>; |
| }) -> (resource struct { |
| f64 array<zx.handle, array_size>; |
| }); |
| }; |
| |
| @transport("Banjo") |
| @banjo_layout("ddk-protocol") |
| protocol ArrayofArrays { |
| Bool(struct { |
| b array<array<bool, 4>, array_size>; |
| }) -> (struct { |
| b array<array<bool, 4>, array_size>; |
| }); |
| Int8(struct { |
| i8 array<array<int8, 4>, array_size>; |
| }) -> (struct { |
| i8 array<array<int8, 4>, array_size>; |
| }); |
| Int16(struct { |
| i16 array<array<int16, 4>, array_size>; |
| }) -> (struct { |
| i16 array<array<int16, 4>, array_size>; |
| }); |
| Int32(struct { |
| i32 array<array<int32, 4>, array_size>; |
| }) -> (struct { |
| i32 array<array<int32, 4>, array_size>; |
| }); |
| Int64(struct { |
| i64 array<array<int64, 4>, array_size>; |
| }) -> (struct { |
| i64 array<array<int64, 4>, array_size>; |
| }); |
| Uint8(struct { |
| u8 array<array<uint8, 4>, array_size>; |
| }) -> (struct { |
| u8 array<array<uint8, 4>, array_size>; |
| }); |
| Uint16(struct { |
| u16 array<array<uint16, 4>, array_size>; |
| }) -> (struct { |
| u16 array<array<uint16, 4>, array_size>; |
| }); |
| Uint32(struct { |
| u32 array<array<uint32, 4>, array_size>; |
| }) -> (struct { |
| u32 array<array<uint32, 4>, array_size>; |
| }); |
| Uint64(struct { |
| u64 array<array<uint64, 4>, array_size>; |
| }) -> (struct { |
| u64 array<array<uint64, 4>, array_size>; |
| }); |
| Float32(struct { |
| f32 array<array<float32, 4>, array_size>; |
| }) -> (struct { |
| f32 array<array<float32, 4>, array_size>; |
| }); |
| Float64(struct { |
| u64 array<array<float64, 4>, array_size>; |
| }) -> (struct { |
| f64 array<array<float64, 4>, array_size>; |
| }); |
| Handle(resource struct { |
| u64 array<array<zx.handle, 4>, array_size>; |
| }) -> (resource struct { |
| f64 array<array<zx.handle, 4>, array_size>; |
| }); |
| }; |