blob: 86682edcc0367c13a0c240cfe4940bc072b47b21 [file] [log] [blame]
// Copyright 2018 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.
// A set of structs and interface methods designed to exercise FIDL code.
// For now covering fidl_linearize.
// TODO(https://fxbug.dev/42125015) Auto-generate extra_messages.h
library fidl.test.coding;
type IntStruct = struct {
v int64;
};
type SimpleTable = table {
1: x IntStruct;
5: y IntStruct;
};
type ResourceSimpleTable = resource table {
1: x IntStruct;
5: y IntStruct;
};
type OlderSimpleTable = table {
1: x IntStruct;
};
type NewerSimpleTable = table {
1: x IntStruct;
5: y IntStruct;
6: z IntStruct;
};
type SampleUnion = strict union {
1: i IntStruct;
2: st SimpleTable;
3: raw_int int32;
};
type SampleXUnion = flexible union {
1: i IntStruct;
2: st SimpleTable;
3: raw_int int32;
};
type SampleStrictXUnion = strict union {
1: i IntStruct;
2: st SimpleTable;
3: raw_int int32;
};
type SampleStrictXUnionStruct = struct {
xu SampleStrictXUnion;
};
type SampleXUnionStruct = struct {
xu SampleXUnion;
};
type SampleNullableXUnionStruct = struct {
opt_xu SampleXUnion:optional;
};
type LLCPPStyleUnion = flexible union {
1: primitive int32;
};
type LLCPPStyleUnionStruct = struct {
u LLCPPStyleUnion;
};
type Int16Bits = strict bits : uint16 {
BIT_1 = 1;
BIT_3 = 4;
BIT_5 = 16;
};
type Int16BitsStruct = struct {
bits Int16Bits;
};
type Int32Bits = strict bits : uint32 {
BIT_7 = 64;
BIT_12 = 2048;
BIT_27 = 67108864;
};
type Int32BitsStruct = struct {
bits Int32Bits;
};
// For the enum validation tests, we will define enums of all the possible
// underlying types, and for each of them, create three valid elements:
// - std::numeric_limits<UnderlyingType>::min()
// - std::numeric_limits<UnderlyingType>::max()
// - 42
type Int8Enum = strict enum : int8 {
VALID_MIN = -128;
VALID_MAX = 127;
VALID_42 = 42;
};
type Int8EnumStruct = struct {
e Int8Enum;
};
type Uint8Enum = strict enum : uint8 {
VALID_MIN = 0;
VALID_MAX = 255;
VALID_42 = 42;
};
type Uint8EnumStruct = struct {
e Uint8Enum;
};
type Int16Enum = strict enum : int16 {
VALID_MIN = -32768;
VALID_MAX = 32767;
VALID_42 = 42;
};
type Int16EnumStruct = struct {
e Int16Enum;
};
type Uint16Enum = strict enum : uint16 {
VALID_MIN = 0;
VALID_MAX = 65535;
VALID_42 = 42;
};
type Uint16EnumStruct = struct {
e Uint16Enum;
};
type Int32Enum = strict enum : int32 {
VALID_MIN = -2147483648;
VALID_MAX = 2147483647;
VALID_42 = 42;
};
type Int32EnumStruct = struct {
e Int32Enum;
};
type Uint32Enum = strict enum : uint32 {
VALID_MIN = 0;
VALID_MAX = 4294967295;
VALID_42 = 42;
};
type Uint32EnumStruct = struct {
e Uint32Enum;
};
type Int64Enum = strict enum : int64 {
VALID_MIN = -9223372036854775808;
VALID_MAX = 9223372036854775807;
VALID_42 = 42;
};
type Int64EnumStruct = struct {
e Int64Enum;
};
type Uint64Enum = strict enum : uint64 {
VALID_MIN = 0;
VALID_MAX = 18446744073709551615;
VALID_42 = 42;
};
type Uint64EnumStruct = struct {
e Uint64Enum;
};
type Uint32VectorStruct = struct {
vec vector<uint32>;
};
type StringStruct = struct {
str string;
};
type RecursiveOptional = struct {
inner box<RecursiveOptional>;
};
type RecursiveTable = table {
1: inner RecursiveOptional;
};
type BoolStruct = struct {
val bool;
};
type OptionalBoolStruct = struct {
inner box<BoolStruct>;
};