1//
2// Copyright (c) ZeroC, Inc. All rights reserved.
3//
4
5#pragma once
6
7[["cs:typeid-namespace:Ice.optional.AMD.TypeId", "suppress-warning:deprecated"]]
8["cs:namespace:Ice.optional.AMD"]
9module Test
10{
11
12class OneOptional
13{
14    optional(1) int a;
15}
16
17enum MyEnum
18{
19    MyEnumMember
20}
21
22struct SmallStruct
23{
24    byte m;
25}
26
27struct FixedStruct
28{
29    int m;
30}
31
32struct VarStruct
33{
34    string m;
35}
36
37["clr:class"]
38struct ClassVarStruct
39{
40    int a;
41}
42
43sequence<byte> ByteSeq;
44sequence<bool> BoolSeq;
45sequence<short> ShortSeq;
46sequence<int> IntSeq;
47sequence<long> LongSeq;
48sequence<float> FloatSeq;
49sequence<double> DoubleSeq;
50sequence<string> StringSeq;
51sequence<MyEnum> MyEnumSeq;
52sequence<SmallStruct> SmallStructSeq;
53["clr:generic:List"] sequence<SmallStruct> SmallStructList;
54sequence<FixedStruct> FixedStructSeq;
55["clr:generic:LinkedList"] sequence<FixedStruct> FixedStructList;
56sequence<VarStruct> VarStructSeq;
57sequence<OneOptional> OneOptionalSeq;
58sequence<OneOptional*> OneOptionalPrxSeq;
59
60["clr:serializable:Ice.optional.Test.SerializableClass"]
61sequence<byte> Serializable;
62
63dictionary<int, int> IntIntDict;
64dictionary<string, int> StringIntDict;
65dictionary<int, MyEnum> IntEnumDict;
66dictionary<int, FixedStruct> IntFixedStructDict;
67dictionary<int, VarStruct> IntVarStructDict;
68dictionary<int, OneOptional> IntOneOptionalDict;
69dictionary<int, OneOptional*> IntOneOptionalPrxDict;
70
71class MultiOptional
72{
73    optional(1) byte a;
74    optional(2) bool b;
75    optional(3) short c;
76    optional(4) int d;
77    optional(5) long e;
78    optional(6) float f;
79    optional(7) double g;
80    optional(8) string h;
81    optional(9) MyEnum i;
82    optional(10) MultiOptional* j;
83    optional(11) MultiOptional k;
84    optional(12) ByteSeq bs;
85    optional(13) StringSeq ss;
86    optional(14) IntIntDict iid;
87    optional(15) StringIntDict sid;
88    optional(16) FixedStruct fs;
89    optional(17) VarStruct vs;
90
91    optional(18) ShortSeq shs;
92    optional(19) MyEnumSeq es;
93    optional(20) FixedStructSeq fss;
94    optional(21) VarStructSeq vss;
95    optional(22) OneOptionalSeq oos;
96    optional(23) OneOptionalPrxSeq oops;
97
98    optional(24) IntEnumDict ied;
99    optional(25) IntFixedStructDict ifsd;
100    optional(26) IntVarStructDict ivsd;
101    optional(27) IntOneOptionalDict iood;
102    optional(28) IntOneOptionalPrxDict ioopd;
103
104    optional(29) BoolSeq bos;
105
106    optional(30) Serializable ser;
107}
108
109class A
110{
111    int requiredA;
112    optional(1) int ma;
113    optional(50) int mb;
114    optional(500) int mc;
115}
116
117["preserve-slice"]
118class B extends A
119{
120    int requiredB;
121    optional(10) int md;
122}
123
124class C extends B
125{
126    string ss;
127    optional(890) string ms;
128}
129
130class WD
131{
132    optional(1) int a = 5;
133    optional(2) string s = "test";
134}
135
136exception OptionalException
137{
138    bool req = false;
139    optional(1) int a = 5;
140    optional(2) string b;
141    optional(50) OneOptional o;
142}
143
144exception DerivedException extends OptionalException
145{
146    optional(600) string ss = "test";
147    optional(601) OneOptional o2;
148}
149
150exception RequiredException extends OptionalException
151{
152    string ss = "test";
153    OneOptional o2;
154}
155
156["clr:property"]
157class OptionalWithCustom
158{
159    optional(1) SmallStructList l;
160    ["protected"] optional(2) SmallStructList lp;
161    optional(3) ClassVarStruct s;
162}
163
164class E
165{
166    A ae;
167}
168
169class F extends E
170{
171    optional(1) A af;
172}
173
174class G1
175{
176    string a;
177}
178
179class G2
180{
181    long a;
182}
183
184class G
185{
186    optional(1) G1 gg1Opt;
187    G2 gg2;
188    optional(0) G2 gg2Opt;
189    G1 gg1;
190}
191
192class Recursive;
193sequence<Recursive> RecursiveSeq;
194
195class Recursive {
196    optional(0) RecursiveSeq value;
197}
198
199["amd"]
200interface Initial
201{
202    void shutdown();
203
204    Object pingPong(Object o);
205
206    void opOptionalException(optional(1) int a, optional(2) string b, optional(3) OneOptional o)
207        throws OptionalException;
208
209    void opDerivedException(optional(1) int a, optional(2) string b, optional(3) OneOptional o)
210        throws OptionalException;
211
212    void opRequiredException(optional(1) int a, optional(2) string b, optional(3) OneOptional o)
213        throws OptionalException;
214
215    optional(1) byte opByte(optional(2) byte p1, out optional(3) byte p3);
216
217    optional(1) bool opBool(optional(2) bool p1, out optional(3) bool p3);
218
219    optional(1) short opShort(optional(2) short p1, out optional(3) short p3);
220
221    optional(1) int opInt(optional(2) int p1, out optional(3) int p3);
222
223    optional(3) long opLong(optional(1) long p1, out optional(2) long p3);
224
225    optional(1) float opFloat(optional(2) float p1, out optional(3) float p3);
226
227    optional(1) double opDouble(optional(2) double p1, out optional(3) double p3);
228
229    optional(1) string opString(optional(2) string p1, out optional(3) string p3);
230
231    optional(1) MyEnum opMyEnum(optional(2) MyEnum p1, out optional(3) MyEnum p3);
232
233    optional(1) SmallStruct opSmallStruct(optional(2) SmallStruct p1, out optional(3) SmallStruct p3);
234
235    optional(1) FixedStruct opFixedStruct(optional(2) FixedStruct p1, out optional(3) FixedStruct p3);
236
237    optional(1) VarStruct opVarStruct(optional(2) VarStruct p1, out optional(3) VarStruct p3);
238
239    optional(1) OneOptional opOneOptional(optional(2) OneOptional p1, out optional(3) OneOptional p3);
240
241    optional(1) OneOptional* opOneOptionalProxy(optional(2) OneOptional* p1, out optional(3) OneOptional* p3);
242
243    optional(1) ByteSeq opByteSeq(optional(2) ByteSeq p1, out optional(3) ByteSeq p3);
244
245    optional(1) BoolSeq opBoolSeq(optional(2) BoolSeq p1, out optional(3) BoolSeq p3);
246
247    optional(1) ShortSeq opShortSeq(optional(2) ShortSeq p1, out optional(3) ShortSeq p3);
248
249    optional(1) IntSeq opIntSeq(optional(2) IntSeq p1, out optional(3) IntSeq p3);
250
251    optional(1) LongSeq opLongSeq(optional(2) LongSeq p1, out optional(3) LongSeq p3);
252
253    optional(1) FloatSeq opFloatSeq(optional(2) FloatSeq p1, out optional(3) FloatSeq p3);
254
255    optional(1) DoubleSeq opDoubleSeq(optional(2) DoubleSeq p1, out optional(3) DoubleSeq p3);
256
257    optional(1) StringSeq opStringSeq(optional(2) StringSeq p1, out optional(3) StringSeq p3);
258
259    optional(1) SmallStructSeq opSmallStructSeq(optional(2) SmallStructSeq p1, out optional(3) SmallStructSeq p3);
260
261    optional(1) SmallStructList opSmallStructList(optional(2) SmallStructList p1, out optional(3) SmallStructList p3);
262
263    optional(1) FixedStructSeq opFixedStructSeq(optional(2) FixedStructSeq p1, out optional(3) FixedStructSeq p3);
264
265    optional(1) FixedStructList opFixedStructList(optional(2) FixedStructList p1, out optional(3) FixedStructList p3);
266
267    optional(1) VarStructSeq opVarStructSeq(optional(2) VarStructSeq p1, out optional(3) VarStructSeq p3);
268
269    optional(1) Serializable opSerializable(optional(2) Serializable p1, out optional(3) Serializable p3);
270
271    optional(1) IntIntDict opIntIntDict(optional(2) IntIntDict p1, out optional(3) IntIntDict p3);
272
273    optional(1) StringIntDict opStringIntDict(optional(2) StringIntDict p1, out optional(3) StringIntDict p3);
274
275    optional(1) IntOneOptionalDict opIntOneOptionalDict(optional(2) IntOneOptionalDict p1,
276                                                        out optional(3) IntOneOptionalDict p3);
277
278    void opClassAndUnknownOptional(A p);
279
280    void sendOptionalClass(bool req, optional(1) OneOptional o);
281
282    void returnOptionalClass(bool req, out optional(1) OneOptional o);
283
284    G opG(G g);
285
286    void opVoid();
287
288    ["marshaled-result"] optional(1) SmallStruct opMStruct1();
289    ["marshaled-result"] optional(1) SmallStruct opMStruct2(optional(2) SmallStruct p1,
290                                                            out optional(3)SmallStruct p2);
291
292    ["marshaled-result"] optional(1) StringSeq opMSeq1();
293    ["marshaled-result"] optional(1) StringSeq opMSeq2(optional(2) StringSeq p1,
294                                                       out optional(3) StringSeq p2);
295
296    ["marshaled-result"] optional(1) StringIntDict opMDict1();
297    ["marshaled-result"] optional(1) StringIntDict opMDict2(optional(2) StringIntDict p1,
298                                                            out optional(3) StringIntDict p2);
299
300    ["marshaled-result"] optional(1) G opMG1();
301    ["marshaled-result"] optional(1) G opMG2(optional(2) G p1, out optional(3) G p2);
302
303    bool supportsRequiredParams();
304
305    bool supportsJavaSerializable();
306
307    bool supportsCsharpSerializable();
308
309    bool supportsCppStringView();
310
311    bool supportsNullOptional();
312}
313
314}
315