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