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