blob: 685c1eb90702460d9c7d0cf78e75d53baf935d6c [file] [log] [blame]
// 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 test.conformance;
using zx;
type XUnionInTable = table {
1: before string;
2: xu SampleXUnion;
3: after string;
};
type TestXUnionInTable = struct {
value XUnionInTable;
};
type IpAddressConfig = strict union {
1: padding_size_24_align_4 array<uint32, 6>;
2: dhcp bool;
};
type InterfaceConfig = struct {
name string;
ip_address_config IpAddressConfig;
};
type TestAddEthernetDeviceRequest = struct {
topological_path string;
config InterfaceConfig;
// TODO(https://fxbug.dev/42159709): Use 'EthernetDevice device;' instead.
this_should_be_a_handle uint32;
};
type TestPackageResolverResolveRequest = resource struct {
package_url string;
selectors vector<string>;
update_policy UpdatePolicy;
// TODO(https://fxbug.dev/42159709): Use 'EthernetDevice device;' instead.
this_should_be_a_handle uint32;
};
type UpdatePolicy = struct {
fetch_if_absent bool;
allow_old_versions bool;
};
type NodeAttributes = struct {
mode uint32;
id uint64;
content_size uint64;
storage_size uint64;
link_count uint64;
creation_time uint64;
modification_time uint64;
};
type FileGetAttrResponse = struct {
s zx.Status;
attributes NodeAttributes;
};
type Int64Struct = struct {
x int64;
};
type SimpleUnion = strict union {
1: i32 int32;
2: i64 int64;
3: s Int64Struct;
4: str string;
};
type SampleXUnion = flexible union {
1: u uint32;
2: su SimpleUnion;
3: st SimpleTable;
};
type SampleResourceXUnion = flexible resource union {
1: u uint32;
2: su SimpleUnion;
3: st SimpleTable;
};
type SampleStrictXUnion = strict union {
1: u uint32;
2: su SimpleUnion;
3: st SimpleTable;
};
type SampleStrictResourceXUnion = strict resource union {
1: u uint32;
2: su SimpleUnion;
3: st SimpleTable;
};
type TestInlineXUnionInStruct = struct {
before string;
xu SampleXUnion;
after string;
};
type TestOptionalXUnionInStruct = struct {
before string;
xu SampleXUnion:optional;
after string;
};
type TestStrictXUnionInStruct = struct {
xu SampleStrictXUnion;
};
type TestStrictResourceXUnionInStruct = resource struct {
xu SampleStrictResourceXUnion;
};
type TestFlexibleXUnionInStruct = struct {
xu SampleXUnion;
};
type TestFlexibleResourceXUnionInStruct = resource struct {
xu SampleResourceXUnion;
};
type TestOptionalStrictXUnionInStruct = struct {
xu SampleStrictXUnion:optional;
};
type TestOptionalStrictResourceXUnionInStruct = resource struct {
xu SampleStrictResourceXUnion:optional;
};
type TestOptionalFlexibleXUnionInStruct = struct {
xu SampleXUnion:optional;
};
type TestOptionalFlexibleResourceXUnionInStruct = resource struct {
xu SampleResourceXUnion:optional;
};
type FidlvizDemo = resource struct {
f1 uint8;
f2 int8;
f3 uint16;
f4 uint32;
f5 uint64;
f6 uint8;
f7 uint8;
f8 uint16;
f9 float32;
f10 float64;
f11 bool;
f12 bool;
f13 string;
f14 string:optional;
f15 string;
f16 handle:optional;
f17 handle;
f18 array<uint8, 3>;
f19 vector<float64>;
f20 vector<uint8>:optional;
f21 vector<uint8>;
f22 FidlvizBits;
f23 FidlvizEnum;
f24 FidlvizStruct1;
f25 FidlvizStruct2;
f26 box<FidlvizStruct1>;
f27 box<FidlvizStruct2>;
f28 FidlvizTable;
f29 FidlvizTable;
f30 FidlvizUnion:optional;
f31 FidlvizUnion;
};
type FidlvizBits = strict bits : uint8 {
A = 1;
B = 2;
C = 4;
};
type FidlvizEnum = strict enum : uint8 {
A = 42;
};
type FidlvizStruct1 = struct {};
type FidlvizStruct2 = struct {
x uint64;
};
type FidlvizTable = table {
1: f1 bool;
3: f3 bool;
};
type FidlvizUnion = strict union {
7: f7 string;
};