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