blob: 01e1727679a708d948c20a27fcd290c0b23e5791 [file] [log] [blame]
Nirav Atreb4186162018-06-08 16:51:29 -07001/*
2 * Copyright (C) 2018 The Android Open Source Project
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16
17package android.hardware.tests.safeunion@1.0;
18
Steven Morelanddec52722018-10-10 13:59:36 -070019import android.hidl.safe_union@1.0::Monostate;
20
Nirav Atreb4186162018-06-08 16:51:29 -070021interface ISafeUnion {
Nirav Atre894556c2018-07-01 13:48:44 -070022
23 enum BitField : uint8_t {
24 V0 = 1 << 0,
25 V1 = 1 << 1,
26 V2 = 1 << 2,
27 V3 = 1 << 3,
28 };
29
30 struct J {
31 vec<uint32_t> j1;
32 uint8_t[65] j2;
33 string j3;
34 };
35
Nirav Atre894556c2018-07-01 13:48:44 -070036 safe_union SmallSafeUnion {
Steven Morelanddec52722018-10-10 13:59:36 -070037 Monostate noinit;
38
Nirav Atre894556c2018-07-01 13:48:44 -070039 uint8_t a;
40 };
41
42 safe_union LargeSafeUnion {
Steven Morelanddec52722018-10-10 13:59:36 -070043 Monostate noinit;
44
Nirav Atre894556c2018-07-01 13:48:44 -070045 int8_t a;
46 uint16_t b;
47 int32_t c;
48 uint64_t d;
49
50 int8_t[13] e;
51 int64_t[5] f;
52
53 string g;
54 vec<bool> h;
55 vec<uint64_t> i;
56
57 J j;
58 struct K {
59 uint8_t k1;
60 uint64_t k2;
61 } k;
62
63 SmallSafeUnion l;
Steven Moreland429faab2018-09-13 16:05:44 -070064
65 BitField m;
66 bitfield<BitField> n;
Nirav Atre894556c2018-07-01 13:48:44 -070067 };
68
Nirav Atre894556c2018-07-01 13:48:44 -070069 safe_union InterfaceTypeSafeUnion {
Steven Morelanddec52722018-10-10 13:59:36 -070070 Monostate noinit;
71
Nirav Atre894556c2018-07-01 13:48:44 -070072 uint32_t a;
73 int8_t[7] b;
Steven Morelandc0236f02020-10-01 23:19:01 +000074 interface c;
Nirav Atre6a8d93f2018-07-13 16:03:31 -070075 string d;
76 vec<string> e;
Nirav Atre4b348432018-07-26 21:24:32 -070077 handle f;
78 vec<handle> g;
79 };
80
81 safe_union HandleTypeSafeUnion {
Steven Morelanddec52722018-10-10 13:59:36 -070082 Monostate noinit;
83
Nirav Atre4b348432018-07-26 21:24:32 -070084 handle a;
85 handle[5] b;
86 vec<handle> c;
Nirav Atre894556c2018-07-01 13:48:44 -070087 };
88
Nirav Atreb4186162018-06-08 16:51:29 -070089 newLargeSafeUnion() generates (LargeSafeUnion myUnion);
90 setA(LargeSafeUnion myUnion, int8_t a) generates (LargeSafeUnion myUnion);
91 setB(LargeSafeUnion myUnion, uint16_t b) generates (LargeSafeUnion myUnion);
92 setC(LargeSafeUnion myUnion, int32_t c) generates (LargeSafeUnion myUnion);
93 setD(LargeSafeUnion myUnion, uint64_t d) generates (LargeSafeUnion myUnion);
94 setE(LargeSafeUnion myUnion, int8_t[13] e) generates (LargeSafeUnion myUnion);
95 setF(LargeSafeUnion myUnion, int64_t[5] f) generates (LargeSafeUnion myUnion);
96 setG(LargeSafeUnion myUnion, string g) generates (LargeSafeUnion myUnion);
97 setH(LargeSafeUnion myUnion, vec<bool> h) generates (LargeSafeUnion myUnion);
98 setI(LargeSafeUnion myUnion, vec<uint64_t> i) generates (LargeSafeUnion myUnion);
99 setJ(LargeSafeUnion myUnion, J j) generates (LargeSafeUnion myUnion);
Nirav Atre894556c2018-07-01 13:48:44 -0700100 setK(LargeSafeUnion myUnion, LargeSafeUnion.K k) generates (LargeSafeUnion myUnion);
Nirav Atreb4186162018-06-08 16:51:29 -0700101 setL(LargeSafeUnion myUnion, SmallSafeUnion l) generates (LargeSafeUnion myUnion);
Steven Moreland429faab2018-09-13 16:05:44 -0700102 setM(LargeSafeUnion myUnion, BitField m) generates (LargeSafeUnion myUnion);
103 setN(LargeSafeUnion myUnion, bitfield<BitField> m) generates (LargeSafeUnion myUnion);
Nirav Atreb4186162018-06-08 16:51:29 -0700104
Nirav Atre894556c2018-07-01 13:48:44 -0700105 newInterfaceTypeSafeUnion() generates (InterfaceTypeSafeUnion myUnion);
106 setInterfaceA(InterfaceTypeSafeUnion myUnion, uint32_t a) generates (InterfaceTypeSafeUnion myUnion);
107 setInterfaceB(InterfaceTypeSafeUnion myUnion, int8_t[7] b) generates (InterfaceTypeSafeUnion myUnion);
Steven Morelandc0236f02020-10-01 23:19:01 +0000108 setInterfaceC(InterfaceTypeSafeUnion myUnion, interface c) generates (InterfaceTypeSafeUnion myUnion);
Nirav Atre6a8d93f2018-07-13 16:03:31 -0700109 setInterfaceD(InterfaceTypeSafeUnion myUnion, string d) generates (InterfaceTypeSafeUnion myUnion);
110 setInterfaceE(InterfaceTypeSafeUnion myUnion, vec<string> e) generates (InterfaceTypeSafeUnion myUnion);
Nirav Atre4b348432018-07-26 21:24:32 -0700111 setInterfaceF(InterfaceTypeSafeUnion myUnion, handle f) generates (InterfaceTypeSafeUnion myUnion);
112 setInterfaceG(InterfaceTypeSafeUnion myUnion, vec<handle> g) generates (InterfaceTypeSafeUnion myUnion);
113
114 newHandleTypeSafeUnion() generates (HandleTypeSafeUnion myUnion);
115 setHandleA(HandleTypeSafeUnion myUnion, handle a) generates (HandleTypeSafeUnion myUnion);
116 setHandleB(HandleTypeSafeUnion myUnion, handle[5] b) generates (HandleTypeSafeUnion myUnion);
117 setHandleC(HandleTypeSafeUnion myUnion, vec<handle> c) generates (HandleTypeSafeUnion myUnion);
Nirav Atreb4186162018-06-08 16:51:29 -0700118};