1// 2// Copyright (c) ZeroC, Inc. All rights reserved. 3// 4 5#pragma once 6 7[["cs:typeid-namespace:Ice.optional.TypeId", "suppress-warning:deprecated"]] 8["cs:namespace:Ice.optional"] 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{ 197 optional(0) RecursiveSeq value; 198} 199 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