1 //
2 // Copyright (c) ZeroC, Inc. All rights reserved.
3 //
4 
5 #include <Ice/Communicator.h>
6 #include <TestI.h>
7 
8 Test::DoubleSeq
opDoubleArray(ICE_IN (std::pair<const Ice::Double *,const Ice::Double * >)inSeq,Test::DoubleSeq & outSeq,const Ice::Current &)9 TestIntfI::opDoubleArray(ICE_IN(std::pair<const Ice::Double*, const Ice::Double*>) inSeq,
10                          Test::DoubleSeq& outSeq,
11                          const Ice::Current&)
12 {
13     Test::DoubleSeq(inSeq.first, inSeq.second).swap(outSeq);
14     return outSeq;
15 }
16 
17 Test::BoolSeq
opBoolArray(ICE_IN (std::pair<const bool *,const bool * >)inSeq,Test::BoolSeq & outSeq,const Ice::Current &)18 TestIntfI::opBoolArray(ICE_IN(std::pair<const bool*, const bool*>) inSeq,
19                        Test::BoolSeq& outSeq,
20                        const Ice::Current&)
21 {
22     Test::BoolSeq(inSeq.first, inSeq.second).swap(outSeq);
23     return outSeq;
24 }
25 
26 Test::ByteList
opByteArray(ICE_IN (std::pair<const Ice::Byte *,const Ice::Byte * >)inSeq,Test::ByteList & outSeq,const Ice::Current &)27 TestIntfI::opByteArray(ICE_IN(std::pair<const Ice::Byte*, const Ice::Byte*>) inSeq,
28                        Test::ByteList& outSeq,
29                        const Ice::Current&)
30 {
31     Test::ByteList(inSeq.first, inSeq.second).swap(outSeq);
32     return outSeq;
33 }
34 
35 Test::VariableList
opVariableArray(ICE_IN (std::pair<const Test::Variable *,const Test::Variable * >)inSeq,Test::VariableList & outSeq,const Ice::Current &)36 TestIntfI::opVariableArray(ICE_IN(std::pair<const Test::Variable*, const Test::Variable*>) inSeq,
37                            Test::VariableList& outSeq,
38                            const Ice::Current&)
39 {
40     Test::VariableList(inSeq.first, inSeq.second).swap(outSeq);
41     return outSeq;
42 }
43 
44 #ifdef ICE_CPP11_MAPPING
45 
46 Test::BoolSeq
opBoolRange(Test::BoolSeq inSeq,Test::BoolSeq & outSeq,const Ice::Current &)47 TestIntfI::opBoolRange(Test::BoolSeq inSeq, Test::BoolSeq& outSeq, const Ice::Current&)
48 {
49     outSeq.swap(inSeq);
50     return outSeq;
51 }
52 
53 Test::ByteList
opByteRange(Test::ByteList inSeq,Test::ByteList & outSeq,const Ice::Current &)54 TestIntfI::opByteRange(Test::ByteList inSeq, Test::ByteList& outSeq, const Ice::Current&)
55 {
56     outSeq.swap(inSeq);
57     return outSeq;
58 }
59 
60 Test::VariableList
opVariableRange(Test::VariableList inSeq,Test::VariableList & outSeq,const Ice::Current &)61 TestIntfI::opVariableRange(Test::VariableList inSeq, Test::VariableList& outSeq, const Ice::Current&)
62 {
63     outSeq.swap(inSeq);
64     return outSeq;
65 }
66 
67 Test::ByteList
opByteRangeType(Test::ByteList inSeq,Test::ByteList & outSeq,const Ice::Current &)68 TestIntfI::opByteRangeType(Test::ByteList inSeq, Test::ByteList& outSeq, const Ice::Current&)
69 {
70     outSeq.swap(inSeq);
71     return outSeq;
72 }
73 
74 Test::VariableList
opVariableRangeType(Test::VariableList inSeq,Test::VariableList & outSeq,const Ice::Current &)75 TestIntfI::opVariableRangeType(Test::VariableList inSeq, Test::VariableList& outSeq, const Ice::Current&)
76 {
77     outSeq.swap(inSeq);
78     return outSeq;
79 }
80 
81 #else
82 
83 Test::BoolSeq
opBoolRange(const std::pair<Test::BoolSeq::const_iterator,Test::BoolSeq::const_iterator> & inSeq,Test::BoolSeq & outSeq,const Ice::Current &)84 TestIntfI::opBoolRange(const std::pair<Test::BoolSeq::const_iterator, Test::BoolSeq::const_iterator>& inSeq,
85                        Test::BoolSeq& outSeq,
86                        const Ice::Current&)
87 {
88     Test::BoolSeq(inSeq.first, inSeq.second).swap(outSeq);
89     return outSeq;
90 }
91 
92 Test::ByteList
opByteRange(const std::pair<Test::ByteList::const_iterator,Test::ByteList::const_iterator> & inSeq,Test::ByteList & outSeq,const Ice::Current &)93 TestIntfI::opByteRange(const std::pair<Test::ByteList::const_iterator, Test::ByteList::const_iterator>& inSeq,
94                        Test::ByteList& outSeq,
95                        const Ice::Current&)
96 {
97     Test::ByteList(inSeq.first, inSeq.second).swap(outSeq);
98     return outSeq;
99 }
100 
101 Test::VariableList
opVariableRange(const std::pair<Test::VariableList::const_iterator,Test::VariableList::const_iterator> & inSeq,Test::VariableList & outSeq,const Ice::Current &)102 TestIntfI::opVariableRange(
103     const std::pair<Test::VariableList::const_iterator, Test::VariableList::const_iterator>& inSeq,
104     Test::VariableList& outSeq,
105     const Ice::Current&)
106 {
107     Test::VariableList(inSeq.first, inSeq.second).swap(outSeq);
108     return outSeq;
109 }
110 
111 Test::ByteList
opByteRangeType(const std::pair<Test::ByteList::const_iterator,Test::ByteList::const_iterator> & inSeq,Test::ByteList & outSeq,const Ice::Current &)112 TestIntfI::opByteRangeType(const std::pair<Test::ByteList::const_iterator, Test::ByteList::const_iterator>& inSeq,
113                            Test::ByteList& outSeq,
114                            const Ice::Current&)
115 {
116     Test::ByteList(inSeq.first, inSeq.second).swap(outSeq);
117     return outSeq;
118 }
119 
120 Test::VariableList
opVariableRangeType(const std::pair<std::deque<Test::Variable>::const_iterator,std::deque<Test::Variable>::const_iterator> & inSeq,Test::VariableList & outSeq,const Ice::Current &)121 TestIntfI::opVariableRangeType(
122     const std::pair<std::deque<Test::Variable>::const_iterator, std::deque<Test::Variable>::const_iterator>& inSeq,
123     Test::VariableList& outSeq,
124     const Ice::Current&)
125 {
126     for(std::deque<Test::Variable>::const_iterator p = inSeq.first; p != inSeq.second; ++p)
127     {
128         outSeq.push_back(*p);
129     }
130     return outSeq;
131 }
132 
133 #endif
134 
135 std::deque<bool>
opBoolSeq(ICE_IN (std::deque<bool>)inSeq,std::deque<bool> & outSeq,const Ice::Current &)136 TestIntfI::opBoolSeq(ICE_IN(std::deque<bool>) inSeq,
137                      std::deque<bool>& outSeq,
138                      const Ice::Current&)
139 {
140     outSeq = inSeq;
141     return inSeq;
142 }
143 
144 std::list<bool>
opBoolList(ICE_IN (std::list<bool>)inSeq,std::list<bool> & outSeq,const Ice::Current &)145 TestIntfI::opBoolList(ICE_IN(std::list<bool>) inSeq,
146                       std::list<bool>& outSeq,
147                       const Ice::Current&)
148 {
149     outSeq = inSeq;
150     return inSeq;
151 }
152 
153 ::Test::BoolDequeList
opBoolDequeList(ICE_IN (::Test::BoolDequeList)inSeq,::Test::BoolDequeList & outSeq,const Ice::Current &)154 TestIntfI::opBoolDequeList(ICE_IN(::Test::BoolDequeList) inSeq, ::Test::BoolDequeList& outSeq, const Ice::Current&)
155 {
156     outSeq = inSeq;
157     return inSeq;
158 }
159 
160 ::Test::BoolDequeList
opBoolDequeListArray(ICE_IN (::std::pair<const std::deque<bool> *,const std::deque<bool> * >)inSeq,::Test::BoolDequeList & outSeq,const::Ice::Current &)161 TestIntfI::opBoolDequeListArray(ICE_IN(::std::pair<const std::deque<bool>*, const std::deque<bool>*>) inSeq,
162                                 ::Test::BoolDequeList& outSeq,
163                                 const ::Ice::Current&)
164 {
165     for(const std::deque<bool>* p = inSeq.first; p != inSeq.second; ++p)
166     {
167         outSeq.push_back(*p);
168     }
169     return outSeq;
170 }
171 
172 #ifdef ICE_CPP11_MAPPING
173 Test::BoolDequeList
opBoolDequeListRange(Test::BoolDequeList inSeq,Test::BoolDequeList & outSeq,const::Ice::Current &)174 TestIntfI::opBoolDequeListRange(Test::BoolDequeList inSeq, Test::BoolDequeList& outSeq, const ::Ice::Current&)
175 {
176     outSeq.swap(inSeq);
177     return outSeq;
178 }
179 #else
180 ::Test::BoolDequeList
opBoolDequeListRange(const::std::pair<::Test::BoolDequeList::const_iterator,::Test::BoolDequeList::const_iterator> & inSeq,::Test::BoolDequeList & outSeq,const::Ice::Current &)181 TestIntfI::opBoolDequeListRange(const ::std::pair< ::Test::BoolDequeList::const_iterator,
182                                                    ::Test::BoolDequeList::const_iterator>& inSeq,
183                                 ::Test::BoolDequeList& outSeq,
184                                 const ::Ice::Current&)
185 {
186     for(::Test::BoolDequeList::const_iterator p = inSeq.first; p != inSeq.second; ++p)
187     {
188         outSeq.push_back(*p);
189     }
190     return outSeq;
191 }
192 #endif
193 
194 std::deque< ::Ice::Byte>
opByteSeq(ICE_IN (std::deque<::Ice::Byte>)inSeq,std::deque<::Ice::Byte> & outSeq,const Ice::Current &)195 TestIntfI::opByteSeq(ICE_IN(std::deque< ::Ice::Byte>) inSeq,
196                      std::deque< ::Ice::Byte>& outSeq,
197                      const Ice::Current&)
198 {
199     outSeq = inSeq;
200     return inSeq;
201 }
202 
203 std::list< ::Ice::Byte>
opByteList(ICE_IN (std::list<::Ice::Byte>)inSeq,std::list<::Ice::Byte> & outSeq,const Ice::Current &)204 TestIntfI::opByteList(ICE_IN(std::list< ::Ice::Byte>) inSeq,
205                       std::list< ::Ice::Byte>& outSeq,
206                       const Ice::Current&)
207 {
208     outSeq = inSeq;
209     return inSeq;
210 }
211 
212 MyByteSeq
opMyByteSeq(ICE_IN (MyByteSeq)inSeq,MyByteSeq & outSeq,const Ice::Current &)213 TestIntfI::opMyByteSeq(ICE_IN(MyByteSeq) inSeq,
214                        MyByteSeq& outSeq,
215                        const Ice::Current&)
216 {
217     outSeq = inSeq;
218     return inSeq;
219 }
220 
221 std::string
opString(ICE_IN (Util::string_view)inString,std::string & outString,const Ice::Current &)222 TestIntfI::opString(ICE_IN(Util::string_view) inString,
223                     std::string& outString,
224                     const Ice::Current&)
225 {
226     outString = inString.to_string();
227     return outString;
228 }
229 
230 std::deque< ::std::string>
opStringSeq(ICE_IN (std::deque<::std::string>)inSeq,std::deque<::std::string> & outSeq,const Ice::Current &)231 TestIntfI::opStringSeq(ICE_IN(std::deque< ::std::string>) inSeq,
232                        std::deque< ::std::string>& outSeq,
233                        const Ice::Current&)
234 {
235     outSeq = inSeq;
236     return inSeq;
237 }
238 
239 std::list< ::std::string>
opStringList(ICE_IN (std::list<::std::string>)inSeq,std::list<::std::string> & outSeq,const Ice::Current &)240 TestIntfI::opStringList(ICE_IN(std::list< ::std::string>) inSeq,
241                         std::list< ::std::string>& outSeq,
242                         const Ice::Current&)
243 {
244     outSeq = inSeq;
245     return inSeq;
246 }
247 
248 std::deque< ::Test::Fixed>
opFixedSeq(ICE_IN (std::deque<::Test::Fixed>)inSeq,std::deque<::Test::Fixed> & outSeq,const Ice::Current &)249 TestIntfI::opFixedSeq(ICE_IN(std::deque< ::Test::Fixed>) inSeq,
250                       std::deque< ::Test::Fixed>& outSeq,
251                       const Ice::Current&)
252 {
253     outSeq = inSeq;
254     return inSeq;
255 }
256 
257 std::list< ::Test::Fixed>
opFixedList(ICE_IN (std::list<::Test::Fixed>)inSeq,std::list<::Test::Fixed> & outSeq,const Ice::Current &)258 TestIntfI::opFixedList(ICE_IN(std::list< ::Test::Fixed>) inSeq,
259                        std::list< ::Test::Fixed>& outSeq,
260                        const Ice::Current&)
261 {
262     outSeq = inSeq;
263     return inSeq;
264 }
265 
266 std::deque< ::Test::Variable>
opVariableSeq(ICE_IN (std::deque<::Test::Variable>)inSeq,std::deque<::Test::Variable> & outSeq,const Ice::Current &)267 TestIntfI::opVariableSeq(ICE_IN(std::deque< ::Test::Variable>) inSeq,
268                          std::deque< ::Test::Variable>& outSeq,
269                          const Ice::Current&)
270 {
271     outSeq = inSeq;
272     return inSeq;
273 }
274 
275 std::list< ::Test::Variable>
opVariableList(ICE_IN (std::list<::Test::Variable>)inSeq,std::list<::Test::Variable> & outSeq,const Ice::Current &)276 TestIntfI::opVariableList(ICE_IN(std::list< ::Test::Variable>) inSeq,
277                           std::list< ::Test::Variable>& outSeq,
278                           const Ice::Current&)
279 {
280     outSeq = inSeq;
281     return inSeq;
282 }
283 
284 std::deque< ::Test::StringStringDict>
opStringStringDictSeq(ICE_IN (std::deque<::Test::StringStringDict>)inSeq,std::deque<::Test::StringStringDict> & outSeq,const Ice::Current &)285 TestIntfI::opStringStringDictSeq(ICE_IN(std::deque< ::Test::StringStringDict>) inSeq,
286                                        std::deque< ::Test::StringStringDict>& outSeq,
287                                        const Ice::Current&)
288 {
289     outSeq = inSeq;
290     return inSeq;
291 }
292 
293 std::list< ::Test::StringStringDict>
opStringStringDictList(ICE_IN (std::list<::Test::StringStringDict>)inSeq,std::list<::Test::StringStringDict> & outSeq,const Ice::Current &)294 TestIntfI::opStringStringDictList(ICE_IN(std::list< ::Test::StringStringDict>) inSeq,
295                                         std::list< ::Test::StringStringDict>& outSeq,
296                                         const Ice::Current&)
297 {
298     outSeq = inSeq;
299     return inSeq;
300 }
301 
302 std::deque< ::Test::E>
opESeq(ICE_IN (std::deque<::Test::E>)inSeq,std::deque<::Test::E> & outSeq,const Ice::Current &)303 TestIntfI::opESeq(ICE_IN(std::deque< ::Test::E>) inSeq,
304                         std::deque< ::Test::E>& outSeq,
305                         const Ice::Current&)
306 {
307     outSeq = inSeq;
308     return inSeq;
309 }
310 
311 std::list< ::Test::E>
opEList(ICE_IN (std::list<::Test::E>)inSeq,std::list<::Test::E> & outSeq,const Ice::Current &)312 TestIntfI::opEList(ICE_IN(std::list< ::Test::E>) inSeq,
313                          std::list< ::Test::E>& outSeq,
314                          const Ice::Current&)
315 {
316     outSeq = inSeq;
317     return inSeq;
318 }
319 
320 std::deque< ::Test::DPrxPtr>
opDPrxSeq(ICE_IN (std::deque<::Test::DPrxPtr>)inSeq,std::deque<::Test::DPrxPtr> & outSeq,const Ice::Current &)321 TestIntfI::opDPrxSeq(ICE_IN(std::deque< ::Test::DPrxPtr>) inSeq,
322                            std::deque< ::Test::DPrxPtr>& outSeq,
323                            const Ice::Current&)
324 {
325     outSeq = inSeq;
326     return inSeq;
327 }
328 
329 std::list< ::Test::DPrxPtr>
opDPrxList(ICE_IN (std::list<::Test::DPrxPtr>)inSeq,std::list<::Test::DPrxPtr> & outSeq,const Ice::Current &)330 TestIntfI::opDPrxList(ICE_IN(std::list< ::Test::DPrxPtr>) inSeq,
331                             std::list< ::Test::DPrxPtr>& outSeq,
332                             const Ice::Current&)
333 {
334     outSeq = inSeq;
335     return inSeq;
336 }
337 
338 std::deque< ::Test::CPtr>
opCSeq(ICE_IN (std::deque<::Test::CPtr>)inSeq,std::deque<::Test::CPtr> & outSeq,const Ice::Current &)339 TestIntfI::opCSeq(ICE_IN(std::deque< ::Test::CPtr>) inSeq,
340                   std::deque< ::Test::CPtr>& outSeq,
341                   const Ice::Current&)
342 {
343     outSeq = inSeq;
344     return inSeq;
345 }
346 
347 std::list< ::Test::CPtr>
opCList(ICE_IN (std::list<::Test::CPtr>)inSeq,std::list<::Test::CPtr> & outSeq,const Ice::Current &)348 TestIntfI::opCList(ICE_IN(std::list< ::Test::CPtr>) inSeq,
349                    std::list< ::Test::CPtr>& outSeq,
350                    const Ice::Current&)
351 {
352     outSeq = inSeq;
353     return inSeq;
354 }
355 
356 #ifdef ICE_CPP11_MAPPING
357 Test::ClassStruct
opClassStruct(Test::ClassStruct inS,Test::ClassStructSeq inSeq,Test::ClassStruct & out,Test::ClassStructSeq & outSeq,const Ice::Current &)358 TestIntfI::opClassStruct(Test::ClassStruct inS,
359                          Test::ClassStructSeq inSeq,
360                          Test::ClassStruct& out,
361                          Test::ClassStructSeq& outSeq,
362                          const Ice::Current&)
363 {
364     outSeq = std::move(inSeq);
365     out = inS;
366     return inS;
367 }
368 
369 #else
370 ::Test::ClassStructPtr
opClassStruct(const::Test::ClassStructPtr & inS,const::Test::ClassStructSeq & inSeq,::Test::ClassStructPtr & out,::Test::ClassStructSeq & outSeq,const Ice::Current &)371 TestIntfI::opClassStruct(const ::Test::ClassStructPtr& inS,
372                          const ::Test::ClassStructSeq& inSeq,
373                          ::Test::ClassStructPtr& out,
374                          ::Test::ClassStructSeq& outSeq,
375                          const Ice::Current&)
376 {
377     outSeq = inSeq;
378     out = inS;
379     return inS;
380 }
381 #endif
382 
383 void
opOutArrayByteSeq(ICE_IN (Test::ByteSeq)data,Test::ByteSeq & copy,const Ice::Current &)384 TestIntfI::opOutArrayByteSeq(ICE_IN(Test::ByteSeq) data, Test::ByteSeq& copy, const Ice::Current&)
385 {
386     copy = data;
387 }
388 
389 void
opOutRangeByteSeq(ICE_IN (Test::ByteSeq)data,Test::ByteSeq & copy,const Ice::Current &)390 TestIntfI::opOutRangeByteSeq(ICE_IN(Test::ByteSeq) data, Test::ByteSeq& copy, const Ice::Current&)
391 {
392     copy = data;
393 }
394 
395 Test::IntStringDict
opIntStringDict(ICE_IN (Test::IntStringDict)data,Test::IntStringDict & copy,const Ice::Current &)396 TestIntfI::opIntStringDict(ICE_IN(Test::IntStringDict) data, Test::IntStringDict& copy, const Ice::Current&)
397 {
398     copy = data;
399     return data;
400 }
401 
402 Test::CustomMap<Ice::Long, Ice::Long>
opVarDict(ICE_IN (Test::CustomMap<std::string,Ice::Int>)data,Test::CustomMap<std::string,Ice::Int> & copy,const Ice::Current &)403 TestIntfI::opVarDict(ICE_IN(Test::CustomMap<std::string, Ice::Int>) data,
404                      Test::CustomMap<std::string, Ice::Int>& copy, const Ice::Current&)
405 {
406     copy = data;
407 
408     Test::CustomMap<Ice::Long, Ice::Long> result;
409     for(Ice::Long i = 0; i < 1000; ++i)
410     {
411         result[i] = i*i;
412     }
413     return result;
414 }
415 
416 Test::CustomMap<Ice::Int, std::string>
opCustomIntStringDict(ICE_IN (std::map<Ice::Int,Util::string_view>)data,Test::CustomMap<Ice::Int,std::string> & copy,const Ice::Current &)417 TestIntfI::opCustomIntStringDict(
418     ICE_IN(std::map<Ice::Int, Util::string_view>) data,
419     Test::CustomMap<Ice::Int, std::string>& copy,
420     const Ice::Current&)
421 {
422     copy.clear();
423 
424     for(std::map<Ice::Int, Util::string_view>::const_iterator p = data.begin();
425         p != data.end(); ++p)
426     {
427         copy[p->first] = p->second.to_string();
428     }
429 
430     return copy;
431 }
432 
433 Test::ShortBuffer
opShortBuffer(ICE_IN (Test::ShortBuffer)inS,Test::ShortBuffer & outS,const Ice::Current &)434 TestIntfI::opShortBuffer(ICE_IN(Test::ShortBuffer) inS, Test::ShortBuffer& outS, const Ice::Current&)
435 {
436     outS = inS;
437     return outS;
438 }
439 
440 Test::CustomBuffer<bool>
opBoolBuffer(ICE_IN (Test::CustomBuffer<bool>)inS,Test::CustomBuffer<bool> & outS,const Ice::Current &)441 TestIntfI::opBoolBuffer(ICE_IN(Test::CustomBuffer<bool>) inS, Test::CustomBuffer<bool>& outS, const Ice::Current&)
442 {
443     outS = inS;
444     return outS;
445 }
446 
447 Test::BufferStruct
opBufferStruct(ICE_IN (Test::BufferStruct)bs,const Ice::Current &)448 TestIntfI::opBufferStruct(ICE_IN(Test::BufferStruct) bs, const Ice::Current&)
449 {
450     return bs;
451 }
452 
453 void
shutdown(const Ice::Current & current)454 TestIntfI::shutdown(const Ice::Current& current)
455 {
456     current.adapter->getCommunicator()->shutdown();
457 }
458