zeroc-ice 3.7.3 → 3.7.7

Sign up to get free protection for your applications and to get access to all the features.
Files changed (227) hide show
  1. checksums.yaml +4 -4
  2. data/ext/Communicator.cpp +3 -0
  3. data/ext/Config.h +11 -0
  4. data/ext/Types.cpp +18 -2
  5. data/ext/Util.cpp +15 -3
  6. data/ext/Util.h +36 -0
  7. data/ext/ice/cpp/include/Ice/Exception.h +3 -3
  8. data/ext/ice/cpp/include/Ice/Functional.h +3 -1
  9. data/ext/ice/cpp/include/Ice/IconvStringConverter.h +1 -1
  10. data/ext/ice/cpp/include/Ice/Initialize.h +1 -1
  11. data/ext/ice/cpp/include/Ice/Object.h +7 -0
  12. data/ext/ice/cpp/include/Ice/Optional.h +1 -1
  13. data/ext/ice/cpp/include/Ice/OutgoingAsync.h +15 -0
  14. data/ext/ice/cpp/include/Ice/Proxy.h +56 -25
  15. data/ext/ice/cpp/include/Ice/Service.h +1 -1
  16. data/ext/ice/cpp/include/IceSSL/Plugin.h +142 -0
  17. data/ext/ice/cpp/include/IceUtil/Config.h +3 -2
  18. data/ext/ice/cpp/include/IceUtil/Functional.h +3 -1
  19. data/ext/ice/cpp/include/IceUtil/MutexPtrLock.h +4 -4
  20. data/ext/ice/cpp/include/IceUtil/ResourceConfig.h +2 -2
  21. data/ext/ice/cpp/include/generated/Ice/BuiltinSequences.h +2 -2
  22. data/ext/ice/cpp/include/generated/Ice/Communicator.h +10 -4
  23. data/ext/ice/cpp/include/generated/Ice/CommunicatorF.h +2 -2
  24. data/ext/ice/cpp/include/generated/Ice/Connection.h +58 -15
  25. data/ext/ice/cpp/include/generated/Ice/ConnectionF.h +2 -2
  26. data/ext/ice/cpp/include/generated/Ice/Current.h +2 -2
  27. data/ext/ice/cpp/include/generated/Ice/Endpoint.h +50 -14
  28. data/ext/ice/cpp/include/generated/Ice/EndpointF.h +2 -2
  29. data/ext/ice/cpp/include/generated/Ice/EndpointTypes.h +2 -2
  30. data/ext/ice/cpp/include/generated/Ice/FacetMap.h +2 -2
  31. data/ext/ice/cpp/include/generated/Ice/Identity.h +2 -2
  32. data/ext/ice/cpp/include/generated/Ice/ImplicitContext.h +8 -2
  33. data/ext/ice/cpp/include/generated/Ice/ImplicitContextF.h +2 -2
  34. data/ext/ice/cpp/include/generated/Ice/Instrumentation.h +62 -2
  35. data/ext/ice/cpp/include/generated/Ice/InstrumentationF.h +2 -2
  36. data/ext/ice/cpp/include/generated/Ice/LocalException.h +523 -127
  37. data/ext/ice/cpp/include/generated/Ice/Locator.h +62 -14
  38. data/ext/ice/cpp/include/generated/Ice/LocatorF.h +2 -2
  39. data/ext/ice/cpp/include/generated/Ice/Logger.h +8 -2
  40. data/ext/ice/cpp/include/generated/Ice/LoggerF.h +2 -2
  41. data/ext/ice/cpp/include/generated/Ice/Metrics.h +79 -27
  42. data/ext/ice/cpp/include/generated/Ice/ObjectAdapter.h +8 -2
  43. data/ext/ice/cpp/include/generated/Ice/ObjectAdapterF.h +2 -2
  44. data/ext/ice/cpp/include/generated/Ice/ObjectFactory.h +8 -2
  45. data/ext/ice/cpp/include/generated/Ice/Plugin.h +14 -2
  46. data/ext/ice/cpp/include/generated/Ice/PluginF.h +2 -2
  47. data/ext/ice/cpp/include/generated/Ice/Process.h +10 -4
  48. data/ext/ice/cpp/include/generated/Ice/ProcessF.h +2 -2
  49. data/ext/ice/cpp/include/generated/Ice/Properties.h +8 -2
  50. data/ext/ice/cpp/include/generated/Ice/PropertiesAdmin.h +11 -5
  51. data/ext/ice/cpp/include/generated/Ice/PropertiesF.h +2 -2
  52. data/ext/ice/cpp/include/generated/Ice/RemoteLogger.h +26 -8
  53. data/ext/ice/cpp/include/generated/Ice/Router.h +18 -6
  54. data/ext/ice/cpp/include/generated/Ice/RouterF.h +2 -2
  55. data/ext/ice/cpp/include/generated/Ice/ServantLocator.h +8 -2
  56. data/ext/ice/cpp/include/generated/Ice/ServantLocatorF.h +2 -2
  57. data/ext/ice/cpp/include/generated/Ice/SliceChecksumDict.h +2 -2
  58. data/ext/ice/cpp/include/generated/Ice/ValueFactory.h +14 -2
  59. data/ext/ice/cpp/include/generated/Ice/Version.h +2 -2
  60. data/ext/ice/cpp/include/generated/IceSSL/ConnectionInfo.h +10 -5
  61. data/ext/ice/cpp/include/generated/IceSSL/ConnectionInfoF.h +2 -2
  62. data/ext/ice/cpp/include/generated/IceSSL/EndpointInfo.h +8 -3
  63. data/ext/ice/cpp/src/Ice/ArgVector.cpp +1 -1
  64. data/ext/ice/cpp/src/Ice/BuiltinSequences.cpp +2 -2
  65. data/ext/ice/cpp/src/Ice/Communicator.cpp +2 -2
  66. data/ext/ice/cpp/src/Ice/CommunicatorF.cpp +2 -2
  67. data/ext/ice/cpp/src/Ice/Connection.cpp +2 -2
  68. data/ext/ice/cpp/src/Ice/ConnectionF.cpp +2 -2
  69. data/ext/ice/cpp/src/Ice/ConnectionFactory.cpp +3 -3
  70. data/ext/ice/cpp/src/Ice/Current.cpp +2 -2
  71. data/ext/ice/cpp/src/Ice/Endpoint.cpp +2 -2
  72. data/ext/ice/cpp/src/Ice/EndpointF.cpp +2 -2
  73. data/ext/ice/cpp/src/Ice/EndpointTypes.cpp +2 -2
  74. data/ext/ice/cpp/src/Ice/FacetMap.cpp +2 -2
  75. data/ext/ice/cpp/src/Ice/Identity.cpp +2 -2
  76. data/ext/ice/cpp/src/Ice/ImplicitContext.cpp +2 -2
  77. data/ext/ice/cpp/src/Ice/ImplicitContextF.cpp +2 -2
  78. data/ext/ice/cpp/src/Ice/ImplicitContextI.cpp +1 -1
  79. data/ext/ice/cpp/src/Ice/Initialize.cpp +1 -1
  80. data/ext/ice/cpp/src/Ice/InputStream.cpp +29 -14
  81. data/ext/ice/cpp/src/Ice/Instance.cpp +3 -0
  82. data/ext/ice/cpp/src/Ice/Instance.h +2 -0
  83. data/ext/ice/cpp/src/Ice/Instrumentation.cpp +2 -2
  84. data/ext/ice/cpp/src/Ice/InstrumentationF.cpp +2 -2
  85. data/ext/ice/cpp/src/Ice/LocalException.cpp +398 -2
  86. data/ext/ice/cpp/src/Ice/Locator.cpp +32 -2
  87. data/ext/ice/cpp/src/Ice/LocatorF.cpp +2 -2
  88. data/ext/ice/cpp/src/Ice/LocatorInfo.cpp +3 -3
  89. data/ext/ice/cpp/src/Ice/Logger.cpp +2 -2
  90. data/ext/ice/cpp/src/Ice/LoggerF.cpp +2 -2
  91. data/ext/ice/cpp/src/Ice/Metrics.cpp +8 -2
  92. data/ext/ice/cpp/src/Ice/Network.cpp +1 -1
  93. data/ext/ice/cpp/src/Ice/Network.h +0 -0
  94. data/ext/ice/cpp/src/Ice/ObjectAdapter.cpp +2 -2
  95. data/ext/ice/cpp/src/Ice/ObjectAdapterF.cpp +2 -2
  96. data/ext/ice/cpp/src/Ice/ObjectAdapterFactory.cpp +4 -4
  97. data/ext/ice/cpp/src/Ice/ObjectAdapterI.cpp +8 -8
  98. data/ext/ice/cpp/src/Ice/ObjectFactory.cpp +2 -2
  99. data/ext/ice/cpp/src/Ice/Plugin.cpp +2 -2
  100. data/ext/ice/cpp/src/Ice/PluginF.cpp +2 -2
  101. data/ext/ice/cpp/src/Ice/Process.cpp +2 -2
  102. data/ext/ice/cpp/src/Ice/ProcessF.cpp +2 -2
  103. data/ext/ice/cpp/src/Ice/Properties.cpp +2 -2
  104. data/ext/ice/cpp/src/Ice/PropertiesAdmin.cpp +2 -2
  105. data/ext/ice/cpp/src/Ice/PropertiesF.cpp +2 -2
  106. data/ext/ice/cpp/src/Ice/PropertyNames.cpp +6 -3
  107. data/ext/ice/cpp/src/Ice/PropertyNames.h +1 -1
  108. data/ext/ice/cpp/src/Ice/ProxyFactory.cpp +9 -0
  109. data/ext/ice/cpp/src/Ice/RemoteLogger.cpp +8 -2
  110. data/ext/ice/cpp/src/Ice/RetryQueue.cpp +5 -2
  111. data/ext/ice/cpp/src/Ice/Router.cpp +2 -2
  112. data/ext/ice/cpp/src/Ice/RouterF.cpp +2 -2
  113. data/ext/ice/cpp/src/Ice/RouterInfo.cpp +6 -2
  114. data/ext/ice/cpp/src/Ice/SHA1.cpp +2 -0
  115. data/ext/ice/cpp/src/Ice/ServantLocator.cpp +2 -2
  116. data/ext/ice/cpp/src/Ice/ServantLocatorF.cpp +2 -2
  117. data/ext/ice/cpp/src/Ice/SliceChecksumDict.cpp +2 -2
  118. data/ext/ice/cpp/src/Ice/StreamSocket.cpp +0 -0
  119. data/ext/ice/cpp/src/Ice/Thread.cpp +2 -2
  120. data/ext/ice/cpp/src/Ice/ThreadPool.cpp +5 -1
  121. data/ext/ice/cpp/src/Ice/ThreadPool.h +0 -4
  122. data/ext/ice/cpp/src/Ice/UdpTransceiver.cpp +0 -0
  123. data/ext/ice/cpp/src/Ice/ValueFactory.cpp +2 -2
  124. data/ext/ice/cpp/src/Ice/Version.cpp +2 -2
  125. data/ext/ice/cpp/src/IceDiscovery/IceDiscovery.cpp +2 -2
  126. data/ext/ice/cpp/src/IceDiscovery/IceDiscovery.h +491 -6
  127. data/ext/ice/cpp/src/IceLocatorDiscovery/IceLocatorDiscovery.cpp +2 -2
  128. data/ext/ice/cpp/src/IceLocatorDiscovery/IceLocatorDiscovery.h +16 -4
  129. data/ext/ice/cpp/src/IceLocatorDiscovery/PluginI.cpp +12 -1
  130. data/ext/ice/cpp/src/IceSSL/CertificateI.cpp +23 -1
  131. data/ext/ice/cpp/src/IceSSL/ConnectionInfo.cpp +2 -2
  132. data/ext/ice/cpp/src/IceSSL/ConnectionInfoF.cpp +2 -2
  133. data/ext/ice/cpp/src/IceSSL/EndpointInfo.cpp +2 -2
  134. data/ext/ice/cpp/src/IceSSL/OpenSSLCertificateI.cpp +124 -19
  135. data/ext/ice/cpp/src/IceSSL/OpenSSLEngine.cpp +60 -1
  136. data/ext/ice/cpp/src/IceSSL/OpenSSLTransceiverI.cpp +105 -2
  137. data/ext/ice/cpp/src/IceSSL/OpenSSLTransceiverI.h +1 -0
  138. data/ext/ice/cpp/src/IceSSL/OpenSSLUtil.cpp +2 -0
  139. data/ext/ice/cpp/src/IceSSL/PluginI.cpp +114 -0
  140. data/ext/ice/cpp/src/IceSSL/PluginI.h +21 -0
  141. data/ext/ice/cpp/src/IceSSL/SChannelCertificateI.cpp +142 -1
  142. data/ext/ice/cpp/src/IceSSL/SChannelTransceiverI.cpp +117 -3
  143. data/ext/ice/cpp/src/IceSSL/SChannelTransceiverI.h +1 -0
  144. data/ext/ice/cpp/src/IceSSL/SSLEngine.cpp +20 -1
  145. data/ext/ice/cpp/src/IceSSL/SSLEngine.h +4 -0
  146. data/ext/ice/cpp/src/IceSSL/SecureTransportCertificateI.cpp +133 -2
  147. data/ext/ice/cpp/src/IceSSL/SecureTransportTransceiverI.cpp +151 -89
  148. data/ext/ice/cpp/src/IceSSL/SecureTransportTransceiverI.h +1 -0
  149. data/ext/ice/cpp/src/IceSSL/Util.cpp +0 -0
  150. data/ext/ice/cpp/src/IceUtil/StringConverter.cpp +6 -0
  151. data/ext/ice/cpp/src/IceUtil/Time.cpp +8 -10
  152. data/ext/ice/cpp/src/Slice/CPlusPlusUtil.cpp +6 -2
  153. data/ext/ice/cpp/src/Slice/JavaUtil.cpp +12 -4
  154. data/ext/ice/cpp/src/Slice/PHPUtil.cpp +4 -0
  155. data/ext/ice/cpp/src/Slice/Parser.cpp +11 -7
  156. data/ext/ice/cpp/src/Slice/Parser.h +2 -2
  157. data/ext/ice/cpp/src/Slice/Preprocessor.cpp +12 -0
  158. data/ext/ice/cpp/src/Slice/Preprocessor.h +1 -1
  159. data/ext/ice/cpp/src/Slice/Python.cpp +1 -1
  160. data/ext/ice/cpp/src/Slice/PythonUtil.cpp +17 -5
  161. data/ext/ice/cpp/src/Slice/Scanner.cpp +621 -369
  162. data/ext/ice/mcpp/CMakeLists.txt +80 -0
  163. data/ext/ice/mcpp/expand.c +6 -6
  164. data/ice.gemspec +1 -1
  165. data/lib/Glacier2/Metrics.rb +1 -1
  166. data/lib/Glacier2/PermissionsVerifier.rb +1 -1
  167. data/lib/Glacier2/PermissionsVerifierF.rb +1 -1
  168. data/lib/Glacier2/Router.rb +1 -1
  169. data/lib/Glacier2/RouterF.rb +1 -1
  170. data/lib/Glacier2/SSLInfo.rb +1 -1
  171. data/lib/Glacier2/Session.rb +1 -1
  172. data/lib/Ice/BuiltinSequences.rb +1 -1
  173. data/lib/Ice/Communicator.rb +1 -1
  174. data/lib/Ice/CommunicatorF.rb +1 -1
  175. data/lib/Ice/Connection.rb +1 -1
  176. data/lib/Ice/ConnectionF.rb +1 -1
  177. data/lib/Ice/Current.rb +1 -1
  178. data/lib/Ice/Endpoint.rb +1 -1
  179. data/lib/Ice/EndpointF.rb +1 -1
  180. data/lib/Ice/EndpointTypes.rb +1 -1
  181. data/lib/Ice/FacetMap.rb +1 -1
  182. data/lib/Ice/Identity.rb +1 -1
  183. data/lib/Ice/ImplicitContext.rb +1 -1
  184. data/lib/Ice/ImplicitContextF.rb +1 -1
  185. data/lib/Ice/Instrumentation.rb +1 -1
  186. data/lib/Ice/InstrumentationF.rb +1 -1
  187. data/lib/Ice/LocalException.rb +1 -1
  188. data/lib/Ice/Locator.rb +1 -1
  189. data/lib/Ice/LocatorF.rb +1 -1
  190. data/lib/Ice/Logger.rb +1 -1
  191. data/lib/Ice/LoggerF.rb +1 -1
  192. data/lib/Ice/Metrics.rb +1 -1
  193. data/lib/Ice/ObjectAdapter.rb +1 -1
  194. data/lib/Ice/ObjectAdapterF.rb +1 -1
  195. data/lib/Ice/ObjectFactory.rb +1 -1
  196. data/lib/Ice/Plugin.rb +1 -1
  197. data/lib/Ice/PluginF.rb +1 -1
  198. data/lib/Ice/Process.rb +1 -1
  199. data/lib/Ice/ProcessF.rb +1 -1
  200. data/lib/Ice/Properties.rb +1 -1
  201. data/lib/Ice/PropertiesAdmin.rb +1 -1
  202. data/lib/Ice/PropertiesF.rb +1 -1
  203. data/lib/Ice/RemoteLogger.rb +1 -1
  204. data/lib/Ice/Router.rb +1 -1
  205. data/lib/Ice/RouterF.rb +1 -1
  206. data/lib/Ice/ServantLocator.rb +1 -1
  207. data/lib/Ice/ServantLocatorF.rb +1 -1
  208. data/lib/Ice/SliceChecksumDict.rb +1 -1
  209. data/lib/Ice/ValueFactory.rb +1 -1
  210. data/lib/Ice/Version.rb +1 -1
  211. data/lib/IceBox/IceBox.rb +1 -1
  212. data/lib/IceGrid/Admin.rb +1 -1
  213. data/lib/IceGrid/Descriptor.rb +1 -1
  214. data/lib/IceGrid/Exception.rb +1 -1
  215. data/lib/IceGrid/FileParser.rb +1 -1
  216. data/lib/IceGrid/PluginFacade.rb +1 -1
  217. data/lib/IceGrid/Registry.rb +1 -1
  218. data/lib/IceGrid/Session.rb +1 -1
  219. data/lib/IceGrid/UserAccountMapper.rb +1 -1
  220. data/lib/IcePatch2/FileInfo.rb +1 -1
  221. data/lib/IcePatch2/FileServer.rb +1 -1
  222. data/lib/IceStorm/IceStorm.rb +1 -1
  223. data/lib/IceStorm/Metrics.rb +1 -1
  224. data/slice/Ice/Communicator.ice +1 -1
  225. data/slice/IceBox/IceBox.ice +17 -2
  226. data/slice/IceDiscovery/IceDiscovery.ice +56 -0
  227. metadata +4 -4
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: f061772e9d3a2a709e480d9bd0d028110838d15529c793b34367253782d649db
4
- data.tar.gz: b451ddd683af4bbc6e948d76dce911204ff6c1b4314143e285b89f656ae8f0e4
3
+ metadata.gz: cff48e9f22f45608f28bf0b3ba75a93c4dda74bff3b4de7fee4bf135a40cc46c
4
+ data.tar.gz: 8554d36b0529c6be6828682a00874c85de26145421b62eb6d487df33814a737f
5
5
  SHA512:
6
- metadata.gz: 943b478cf1ecdfb5e4332271fd025e8153b2c0a595ef7c96ce260d3d0a8caaffff2c1b5827166f687650d6fc6685f3e8c0f1c1fdd4090f7aecbb4ef237d8623a
7
- data.tar.gz: 289327d910be75354d258ebc41eb31d2583738cd5b3fc7f43130442d87803000b9dac8787fd0b3ee9874bbf107606ad9c9ae12ac7a7c06f6aa9bd9f942cfdbf4
6
+ metadata.gz: 82c9091136257ab107583fa77daed2acab9c2ca00d2b94511437169ace8efbb8bc212df48efbd88728dd53568e3f52cec8ec851397b1182e24d0b8e913bac289
7
+ data.tar.gz: dd022772296e7269f6c58d726b3fcc941d6980f54d818bf648b62246101ca669de2bffd2faa258e62a0498baf0504c72a91922c4894080811a8f74012d73f699
data/ext/Communicator.cpp CHANGED
@@ -207,6 +207,9 @@ IceRuby_initialize(int argc, VALUE* argv, VALUE /*self*/)
207
207
  data.properties = Ice::createProperties(seq, data.properties);
208
208
  }
209
209
 
210
+ // Always accept cycles in Ruby
211
+ data.properties->setProperty("Ice.AcceptClassCycles", "1");
212
+
210
213
  //
211
214
  // Remaining command line options are passed to the communicator
212
215
  // as an argument vector in case they contain plugin properties.
data/ext/Config.h CHANGED
@@ -51,15 +51,26 @@
51
51
  // BUGFIX: Workaround unused parameter in ruby.h header file
52
52
  //
53
53
  #if defined(__clang__)
54
+ // BUFIX: Workaround clang 13 warnings during ruby macro expansion, it is important to put this before the push/pop
55
+ // directives to keep the warnings ignored in the source files where macros are expanded.
56
+ # if __clang_major__ >= 13
57
+ # pragma clang diagnostic ignored "-Wcompound-token-split-by-macro"
58
+ # endif
54
59
  # pragma clang diagnostic push
55
60
  # pragma clang diagnostic ignored "-Wunused-parameter"
56
61
  //
57
62
  // BUGFIX: Workaround clang conversion warnings in ruby headers
58
63
  //
59
64
  # pragma clang diagnostic ignored "-Wconversion"
65
+
66
+ // Silence warnings regarding missing deprecation attributes in ruby headers
67
+ # pragma clang diagnostic ignored "-Wdocumentation-deprecated-sync"
60
68
  #elif defined(__GNUC__)
61
69
  # pragma GCC diagnostic push
62
70
  # pragma GCC diagnostic ignored "-Wunused-parameter"
71
+ // BUGFIX Workaround G++ 10 problem with ruby headers
72
+ // see https://bugs.ruby-lang.org/issues/16930
73
+ # pragma GCC diagnostic ignored "-Wdeprecated-declarations"
63
74
  #endif
64
75
 
65
76
  #include <ruby.h>
data/ext/Types.cpp CHANGED
@@ -1853,7 +1853,18 @@ IceRuby::DictionaryInfo::unmarshal(Ice::InputStream* is, const UnmarshalCallback
1853
1853
  //
1854
1854
  keyType->unmarshal(is, keyCB, Qnil, 0, false);
1855
1855
  assert(!NIL_P(keyCB->key));
1856
-
1856
+ if (valueType->usesClasses())
1857
+ {
1858
+ // Temporarily set the entry with a Qnil value to ensure the key is not GC
1859
+ // while unmarshaling a value class
1860
+ if (RB_TYPE_P(keyCB->key, T_STRING))
1861
+ {
1862
+ // For string keys create a frozen string to ensure that the key used
1863
+ // in the map matches the one keep in the closure
1864
+ keyCB->key = rb_str_new_frozen(keyCB->key);
1865
+ }
1866
+ callRuby(rb_hash_aset, hash, keyCB->key, Qnil);
1867
+ }
1857
1868
  //
1858
1869
  // The callback will set the dictionary entry with the unmarshaled value,
1859
1870
  // so we pass it the key.
@@ -2744,7 +2755,10 @@ IceRuby::ReadObjectCallback::invoke(const Ice::ObjectPtr& p)
2744
2755
  ex.expectedType = _info->id;
2745
2756
  throw ex;
2746
2757
  }
2747
-
2758
+ #ifndef NDEBUG
2759
+ // With debug builds we force a GC to ensure that all data members are correctly keep alive.
2760
+ rb_gc();
2761
+ #endif
2748
2762
  _cb->unmarshaled(obj, _target, _closure);
2749
2763
  }
2750
2764
  else
@@ -2875,6 +2889,7 @@ IceRuby::ExceptionReader::ExceptionReader(const ExceptionInfoPtr& info) :
2875
2889
  IceRuby::ExceptionReader::~ExceptionReader()
2876
2890
  throw()
2877
2891
  {
2892
+ rb_gc_unregister_address(&_ex);
2878
2893
  }
2879
2894
 
2880
2895
  string
@@ -2910,6 +2925,7 @@ IceRuby::ExceptionReader::_read(Ice::InputStream* is)
2910
2925
  is->startException();
2911
2926
 
2912
2927
  const_cast<VALUE&>(_ex) = _info->unmarshal(is);
2928
+ rb_gc_register_address(&_ex);
2913
2929
 
2914
2930
  const_cast<Ice::SlicedDataPtr&>(_slicedData) = is->endException(_info->preserve);
2915
2931
  }
data/ext/Util.cpp CHANGED
@@ -448,7 +448,11 @@ IceRuby::contextToHash(const Ice::Context& ctx)
448
448
 
449
449
  extern "C"
450
450
  VALUE
451
- IceRuby_Util_hash_foreach_callback(VALUE val, VALUE arg)
451
+ #ifdef RUBY_BLOCK_CALL_FUNC_TAKES_BLOCKARG // Defined Ruby >= 2.1
452
+ IceRuby_Util_hash_foreach_callback(VALUE val, VALUE arg, int, const VALUE*, VALUE)
453
+ #else
454
+ IceRuby_Util_hash_foreach_callback(VALUE val, VALUE arg, int, VALUE*)
455
+ #endif
452
456
  {
453
457
  VALUE key = rb_ary_entry(val, 0);
454
458
  VALUE value = rb_ary_entry(val, 1);
@@ -467,14 +471,22 @@ IceRuby_Util_hash_foreach_callback(VALUE val, VALUE arg)
467
471
 
468
472
  extern "C"
469
473
  {
470
- typedef VALUE (*ICE_RUBY_HASH_FOREACH_CALLBACK)(...);
474
+
475
+ // Defined Ruby >= 2.1. Ruby 2.7 enables RB_BLOCK_CALL_FUNC_STRICT by default
476
+ #ifdef RB_BLOCK_CALL_FUNC_STRICT
477
+ typedef rb_block_call_func_t ICE_RUBY_HASH_FOREACH_CALLBACK;
478
+ #else
479
+ typedef VALUE (*ICE_RUBY_HASH_FOREACH_CALLBACK)(...);
480
+ #endif
481
+
471
482
  }
472
483
 
473
484
  void
474
485
  IceRuby::hashIterate(VALUE h, HashIterator& iter)
475
486
  {
476
487
  assert(TYPE(h) == T_HASH);
477
- callRuby(rb_iterate, rb_each, h,
488
+
489
+ callRuby(::rb_block_call, h, rb_intern("each"), 0, static_cast<VALUE*>(0),
478
490
  reinterpret_cast<ICE_RUBY_HASH_FOREACH_CALLBACK>(IceRuby_Util_hash_foreach_callback),
479
491
  reinterpret_cast<VALUE>(&iter));
480
492
  }
data/ext/Util.h CHANGED
@@ -175,6 +175,9 @@ VALUE callRuby(Fun fun, T1 t1, T2 t2, T3 t3);
175
175
  template<typename Fun, typename T1, typename T2, typename T3, typename T4>
176
176
  VALUE callRuby(Fun fun, T1 t1, T2 t2, T3 t3, T4 t4);
177
177
 
178
+ template<typename Fun, typename T1, typename T2, typename T3, typename T4, typename T5, typename T6>
179
+ VALUE callRuby(Fun fun, T1 t1, T2 t2, T3 t3, T4 t4, T5 t5, T6 t6);
180
+
178
181
  extern "C" typedef VALUE (*RubyFunction)(VALUE);
179
182
 
180
183
  VALUE callProtected(RubyFunction, VALUE);
@@ -314,6 +317,39 @@ inline VALUE callRuby(Fun fun, T1 t1, T2 t2, T3 t3, T4 t4)
314
317
  return callProtected(RF::call, reinterpret_cast<VALUE>(&f));
315
318
  }
316
319
 
320
+ template<typename Fun, typename T1, typename T2, typename T3, typename T4, typename T5, typename T6>
321
+ class RF_6
322
+ {
323
+ public:
324
+
325
+ RF_6(Fun f, T1 t1, T2 t2, T3 t3, T4 t4, T5 t5, T6 t6) : _f(f), _t1(t1), _t2(t2), _t3(t3), _t4(t4), _t5(t5), _t6(t6)
326
+ {
327
+ }
328
+ inline VALUE operator()() { return _f(_t1, _t2, _t3, _t4, _t5, _t6); }
329
+ static inline VALUE call(VALUE f)
330
+ {
331
+ return (*reinterpret_cast<RF_6*>(f))();
332
+ }
333
+
334
+ private:
335
+
336
+ Fun _f;
337
+ T1 _t1;
338
+ T2 _t2;
339
+ T3 _t3;
340
+ T4 _t4;
341
+ T5 _t5;
342
+ T6 _t6;
343
+ };
344
+
345
+ template<typename Fun, typename T1, typename T2, typename T3, typename T4, typename T5, typename T6>
346
+ inline VALUE callRuby(Fun fun, T1 t1, T2 t2, T3 t3, T4 t4, T5 t5, T6 t6)
347
+ {
348
+ typedef RF_6<Fun, T1, T2, T3, T4, T5, T6> RF;
349
+ RF f(fun, t1, t2, t3, t4, t5, t6);
350
+ return callProtected(RF::call, reinterpret_cast<VALUE>(&f));
351
+ }
352
+
317
353
  //
318
354
  // The callRubyVoid functions are used to invoke Ruby C API functions
319
355
  // while translating any Ruby exception into RubyException so that
@@ -44,7 +44,7 @@ public:
44
44
  #endif
45
45
 
46
46
  /**
47
- * Polymporphically clones this exception.
47
+ * Polymorphically clones this exception.
48
48
  * @return A shallow copy of this exception.
49
49
  */
50
50
  #ifdef ICE_CPP11_MAPPING
@@ -69,7 +69,7 @@ class ICE_API UserException : public IceUtil::Exception
69
69
  public:
70
70
 
71
71
  /**
72
- * Polymporphically clones this exception.
72
+ * Polymorphically clones this exception.
73
73
  * @return A shallow copy of this exception.
74
74
  */
75
75
  #ifdef ICE_CPP11_MAPPING
@@ -126,7 +126,7 @@ public:
126
126
  #endif
127
127
 
128
128
  /**
129
- * Polymporphically clones this exception.
129
+ * Polymorphically clones this exception.
130
130
  * @return A shallow copy of this exception.
131
131
  */
132
132
  #ifdef ICE_CPP11_MAPPING
@@ -5,7 +5,9 @@
5
5
  #ifndef ICE_FUNCTIONAL_H
6
6
  #define ICE_FUNCTIONAL_H
7
7
 
8
- #ifndef ICE_CPP11_MAPPING
8
+ #include <IceUtil/Config.h>
9
+
10
+ #if !defined(ICE_CPP11_MAPPING) && (ICE_CPLUSPLUS < 201703L)
9
11
 
10
12
  #include <IceUtil/Functional.h>
11
13
  #include <Ice/Handle.h>
@@ -65,7 +65,7 @@ public:
65
65
 
66
66
  #ifndef ICE_CPP11_MAPPING
67
67
  /**
68
- * Polymporphically clones this exception.
68
+ * Polymorphically clones this exception.
69
69
  * @return A shallow copy of this exception.
70
70
  */
71
71
  virtual IconvInitializationException* ice_clone() const;
@@ -682,7 +682,7 @@ public:
682
682
  * it will be destroyed.
683
683
  * @param holder The holder from which to adopt a communicator.
684
684
  */
685
- CommunicatorHolder& operator=(CommunicatorHolder&& holder);
685
+ CommunicatorHolder& operator=(CommunicatorHolder&& holder) noexcept;
686
686
 
687
687
  /**
688
688
  * Determines whether the holder contains an instance.
@@ -329,7 +329,14 @@ public:
329
329
  protected:
330
330
 
331
331
  Object() {} // This class is abstract.
332
+ #if defined(__clang__)
333
+ # pragma clang diagnostic push
334
+ # pragma clang diagnostic ignored "-Wdeprecated-copy-dtor"
335
+ #endif
332
336
  virtual ~Object() {}
337
+ #if defined(__clang__)
338
+ # pragma clang diagnostic pop
339
+ #endif
333
340
 
334
341
  protected:
335
342
 
@@ -210,7 +210,7 @@ template <class T> inline constexpr typename std::remove_reference<T>::type&& co
210
210
  #if defined NDEBUG
211
211
  # define TR2_OPTIONAL_ASSERTED_EXPRESSION(CHECK, EXPR) (EXPR)
212
212
  #else
213
- # define TR2_OPTIONAL_ASSERTED_EXPRESSION(CHECK, EXPR) ((CHECK) ? (EXPR) : ([]{assert(!#CHECK);}(), (EXPR)))
213
+ # define TR2_OPTIONAL_ASSERTED_EXPRESSION(CHECK, EXPR) ((CHECK) ? (EXPR) : ([]{assert(false && #CHECK);}(), (EXPR)))
214
214
  #endif
215
215
 
216
216
  namespace detail_
@@ -463,7 +463,12 @@ public:
463
463
  std::function<void(bool)> sent) :
464
464
  OutgoingAsyncT<R>(proxy, false), LambdaInvoke(std::move(ex), std::move(sent))
465
465
  {
466
+ #if ICE_CPLUSPLUS >= 201402L
467
+ // Move capture with C++14
468
+ _response = [this, response = std::move(response)](bool ok)
469
+ #else
466
470
  _response = [this, response](bool ok)
471
+ #endif
467
472
  {
468
473
  if(!ok)
469
474
  {
@@ -499,7 +504,12 @@ public:
499
504
  std::function<void(bool)> sent) :
500
505
  OutgoingAsyncT<void>(proxy, false), LambdaInvoke(std::move(ex), std::move(sent))
501
506
  {
507
+ #if ICE_CPLUSPLUS >= 201402L
508
+ // Move capture with C++14
509
+ _response = [this, response = std::move(response)](bool ok)
510
+ #else
502
511
  _response = [this, response](bool ok)
512
+ #endif
503
513
  {
504
514
  if(!ok)
505
515
  {
@@ -535,7 +545,12 @@ public:
535
545
  std::function<void(bool)> sent) :
536
546
  OutgoingAsync(proxy, false), LambdaInvoke(std::move(ex), std::move(sent))
537
547
  {
548
+ #if ICE_CPLUSPLUS >= 201402L
549
+ // Move capture with C++14
550
+ _response = [this, read = std::move(read)](bool ok)
551
+ #else
538
552
  _response = [this, read](bool ok)
553
+ #endif
539
554
  {
540
555
  if(!ok)
541
556
  {
@@ -178,7 +178,12 @@ public:
178
178
  {
179
179
  if(response)
180
180
  {
181
+ #if ICE_CPLUSPLUS >= 201402L
182
+ // Move capture with C++14
183
+ _response = [this, response = std::move(response)](bool ok)
184
+ #else
181
185
  _response = [this, response](bool ok)
186
+ #endif
182
187
  {
183
188
  if(this->_is.b.empty())
184
189
  {
@@ -235,7 +240,11 @@ public:
235
240
  ::std::function<void(bool)> sent) :
236
241
  ProxyGetConnection(proxy), LambdaInvoke(::std::move(ex), ::std::move(sent))
237
242
  {
243
+ #if ICE_CPLUSPLUS >= 201402L
244
+ _response = [&, response = std::move(response)](bool)
245
+ #else
238
246
  _response = [&, response](bool)
247
+ #endif
239
248
  {
240
249
  response(getConnection());
241
250
  };
@@ -354,7 +363,8 @@ public:
354
363
  ::std::function<void(bool)> sent = nullptr,
355
364
  const ::Ice::Context& context = ::Ice::noExplicitContext)
356
365
  {
357
- return _makeLamdaOutgoing<bool>(response, ex, sent, this, &ObjectPrx::_iceI_isA, typeId, context);
366
+ return _makeLamdaOutgoing<bool>(std::move(response), std::move(ex), std::move(sent), this,
367
+ &ObjectPrx::_iceI_isA, typeId, context);
358
368
  }
359
369
 
360
370
  /**
@@ -399,7 +409,8 @@ public:
399
409
  ::std::function<void(bool)> sent = nullptr,
400
410
  const ::Ice::Context& context = ::Ice::noExplicitContext)
401
411
  {
402
- return _makeLamdaOutgoing<void>(response, ex, sent, this, &ObjectPrx::_iceI_ping, context);
412
+ return _makeLamdaOutgoing<void>(std::move(response), std::move(ex), std::move(sent), this,
413
+ &ObjectPrx::_iceI_ping, context);
403
414
  }
404
415
 
405
416
  /**
@@ -445,7 +456,8 @@ public:
445
456
  ::std::function<void(bool)> sent = nullptr,
446
457
  const ::Ice::Context& context = ::Ice::noExplicitContext)
447
458
  {
448
- return _makeLamdaOutgoing<::std::vector<::std::string>>(response, ex, sent, this, &ObjectPrx::_iceI_ids, context);
459
+ return _makeLamdaOutgoing<::std::vector<::std::string>>(std::move(response), std::move(ex), std::move(sent),
460
+ this, &ObjectPrx::_iceI_ids, context);
449
461
  }
450
462
 
451
463
  /**
@@ -490,7 +502,8 @@ public:
490
502
  ::std::function<void(bool)> sent = nullptr,
491
503
  const ::Ice::Context& context = ::Ice::noExplicitContext)
492
504
  {
493
- return _makeLamdaOutgoing<::std::string>(response, ex, sent, this, &ObjectPrx::_iceI_id, context);
505
+ return _makeLamdaOutgoing<::std::string>(std::move(response), std::move(ex), std::move(sent), this,
506
+ &ObjectPrx::_iceI_id, context);
494
507
  }
495
508
 
496
509
  /**
@@ -583,12 +596,16 @@ public:
583
596
  ::std::function<void(::Ice::Object::Ice_invokeResult&&)> r;
584
597
  if(response)
585
598
  {
599
+ #if ICE_CPLUSPLUS >= 201402L
600
+ r = [response = std::move(response)](::Ice::Object::Ice_invokeResult&& result)
601
+ #else
586
602
  r = [response](::Ice::Object::Ice_invokeResult&& result)
603
+ #endif
587
604
  {
588
605
  response(result.returnValue, std::move(result.outParams));
589
606
  };
590
607
  }
591
- auto outAsync = ::std::make_shared<Outgoing>(shared_from_this(), r, ex, sent);
608
+ auto outAsync = ::std::make_shared<Outgoing>(shared_from_this(), std::move(r), std::move(ex), std::move(sent));
592
609
  outAsync->invoke(operation, mode, ::IceInternal::makePair(inParams), context);
593
610
  return [outAsync]() { outAsync->cancel(); };
594
611
  }
@@ -669,12 +686,16 @@ public:
669
686
  ::std::function<void(Result&&)> r;
670
687
  if(response)
671
688
  {
689
+ #if ICE_CPLUSPLUS >= 201402L
690
+ r = [response = std::move(response)](Result&& result)
691
+ #else
672
692
  r = [response](Result&& result)
693
+ #endif
673
694
  {
674
695
  response(::std::get<0>(result), ::std::move(::std::get<1>(result)));
675
696
  };
676
697
  }
677
- auto outAsync = ::std::make_shared<Outgoing>(shared_from_this(), r, ex, sent);
698
+ auto outAsync = ::std::make_shared<Outgoing>(shared_from_this(), std::move(r), std::move(ex), std::move(sent));
678
699
  outAsync->invoke(operation, mode, inParams, context);
679
700
  return [outAsync]() { outAsync->cancel(); };
680
701
  }
@@ -1023,7 +1044,7 @@ public:
1023
1044
  ::std::function<void(bool)> sent = nullptr)
1024
1045
  {
1025
1046
  using LambdaOutgoing = ::IceInternal::ProxyGetConnectionLambda;
1026
- auto outAsync = ::std::make_shared<LambdaOutgoing>(shared_from_this(), response, ex, sent);
1047
+ auto outAsync = ::std::make_shared<LambdaOutgoing>(shared_from_this(), std::move(response), std::move(ex), std::move(sent));
1027
1048
  _iceI_getConnection(outAsync);
1028
1049
  return [outAsync]() { outAsync->cancel(); };
1029
1050
  }
@@ -1073,7 +1094,7 @@ public:
1073
1094
  ::std::function<void(bool)> sent = nullptr)
1074
1095
  {
1075
1096
  using LambdaOutgoing = ::IceInternal::ProxyFlushBatchLambda;
1076
- auto outAsync = ::std::make_shared<LambdaOutgoing>(shared_from_this(), ex, sent);
1097
+ auto outAsync = ::std::make_shared<LambdaOutgoing>(shared_from_this(), std::move(ex), std::move(sent));
1077
1098
  _iceI_flushBatchRequests(outAsync);
1078
1099
  return [outAsync]() { outAsync->cancel(); };
1079
1100
  }
@@ -1128,7 +1149,8 @@ protected:
1128
1149
  template<typename R, typename Re, typename E, typename S, typename Obj, typename Fn, typename... Args>
1129
1150
  ::std::function<void()> _makeLamdaOutgoing(Re r, E e, S s, Obj obj, Fn fn, Args&&... args)
1130
1151
  {
1131
- auto outAsync = ::std::make_shared<::IceInternal::LambdaOutgoing<R>>(shared_from_this(), r, e, s);
1152
+ auto outAsync = ::std::make_shared<::IceInternal::LambdaOutgoing<R>>(shared_from_this(),
1153
+ std::move(r), std::move(e), std::move(s));
1132
1154
  (obj->*fn)(outAsync, std::forward<Args>(args)...);
1133
1155
  return [outAsync]() { outAsync->cancel(); };
1134
1156
  }
@@ -1455,10 +1477,10 @@ ICE_API bool proxyIdentityAndFacetEqual(const ::std::shared_ptr<ObjectPrx>& lhs,
1455
1477
  * compares less than the identity in rhs, false otherwise.
1456
1478
  * \headerfile Ice/Ice.h
1457
1479
  */
1458
- #if (ICE_CPLUSPLUS >= 201703L)
1480
+
1459
1481
  struct ProxyIdentityLess
1460
- #else
1461
- struct ProxyIdentityLess : std::binary_function<bool, ::std::shared_ptr<ObjectPrx>&, ::std::shared_ptr<ObjectPrx>&>
1482
+ #if (ICE_CPLUSPLUS < 201703L)
1483
+ : std::binary_function<bool, ::std::shared_ptr<ObjectPrx>&, ::std::shared_ptr<ObjectPrx>&>
1462
1484
  #endif
1463
1485
  {
1464
1486
  bool operator()(const ::std::shared_ptr<ObjectPrx>& lhs, const ::std::shared_ptr<ObjectPrx>& rhs) const
@@ -1472,10 +1494,9 @@ struct ProxyIdentityLess : std::binary_function<bool, ::std::shared_ptr<ObjectPr
1472
1494
  * compares equal to the identity in rhs, false otherwise.
1473
1495
  * \headerfile Ice/Ice.h
1474
1496
  */
1475
- #if (ICE_CPLUSPLUS >= 201703L)
1476
1497
  struct ProxyIdentityEqual
1477
- #else
1478
- struct ProxyIdentityEqual : std::binary_function<bool, ::std::shared_ptr<ObjectPrx>&, ::std::shared_ptr<ObjectPrx>&>
1498
+ #if (ICE_CPLUSPLUS < 201703L)
1499
+ : std::binary_function<bool, ::std::shared_ptr<ObjectPrx>&, ::std::shared_ptr<ObjectPrx>&>
1479
1500
  #endif
1480
1501
  {
1481
1502
  bool operator()(const ::std::shared_ptr<ObjectPrx>& lhs, const ::std::shared_ptr<ObjectPrx>& rhs) const
@@ -1489,10 +1510,9 @@ struct ProxyIdentityEqual : std::binary_function<bool, ::std::shared_ptr<ObjectP
1489
1510
  * and facet in lhs compare less than the identity and facet in rhs, false otherwise.
1490
1511
  * \headerfile Ice/Ice.h
1491
1512
  */
1492
- #if (ICE_CPLUSPLUS >= 201703L)
1493
1513
  struct ProxyIdentityAndFacetLess
1494
- #else
1495
- struct ProxyIdentityAndFacetLess : std::binary_function<bool, ::std::shared_ptr<ObjectPrx>&, ::std::shared_ptr<ObjectPrx>&>
1514
+ #if (ICE_CPLUSPLUS < 201703L)
1515
+ : std::binary_function<bool, ::std::shared_ptr<ObjectPrx>&, ::std::shared_ptr<ObjectPrx>&>
1496
1516
  #endif
1497
1517
  {
1498
1518
  bool operator()(const ::std::shared_ptr<ObjectPrx>& lhs, const ::std::shared_ptr<ObjectPrx>& rhs) const
@@ -1506,10 +1526,9 @@ struct ProxyIdentityAndFacetLess : std::binary_function<bool, ::std::shared_ptr<
1506
1526
  * and facet in lhs compare equal to the identity and facet in rhs, false otherwise.
1507
1527
  * \headerfile Ice/Ice.h
1508
1528
  */
1509
- #if (ICE_CPLUSPLUS >= 201703L)
1510
1529
  struct ProxyIdentityAndFacetEqual
1511
- #else
1512
- struct ProxyIdentityAndFacetEqual : std::binary_function<bool, ::std::shared_ptr<ObjectPrx>&, ::std::shared_ptr<ObjectPrx>&>
1530
+ #if (ICE_CPLUSPLUS < 201703L)
1531
+ : std::binary_function<bool, ::std::shared_ptr<ObjectPrx>&, ::std::shared_ptr<ObjectPrx>&>
1513
1532
  #endif
1514
1533
  {
1515
1534
  bool operator()(const ::std::shared_ptr<ObjectPrx>& lhs, const ::std::shared_ptr<ObjectPrx>& rhs) const
@@ -3146,7 +3165,10 @@ ICE_API bool proxyIdentityAndFacetEqual(const ObjectPrx& lhs, const ObjectPrx& r
3146
3165
  * compares less than the identity in rhs, false otherwise.
3147
3166
  * \headerfile Ice/Ice.h
3148
3167
  */
3149
- struct ProxyIdentityLess : std::binary_function<bool, ObjectPrx&, ObjectPrx&>
3168
+ struct ProxyIdentityLess
3169
+ #if (ICE_CPLUSPLUS < 201703L)
3170
+ : std::binary_function<bool, ObjectPrx&, ObjectPrx&>
3171
+ #endif
3150
3172
  {
3151
3173
  bool operator()(const ObjectPrx& lhs, const ObjectPrx& rhs) const
3152
3174
  {
@@ -3159,7 +3181,10 @@ struct ProxyIdentityLess : std::binary_function<bool, ObjectPrx&, ObjectPrx&>
3159
3181
  * compares equal to the identity in rhs, false otherwise.
3160
3182
  * \headerfile Ice/Ice.h
3161
3183
  */
3162
- struct ProxyIdentityEqual : std::binary_function<bool, ObjectPrx&, ObjectPrx&>
3184
+ struct ProxyIdentityEqual
3185
+ #if (ICE_CPLUSPLUS < 201703L)
3186
+ : std::binary_function<bool, ObjectPrx&, ObjectPrx&>
3187
+ #endif
3163
3188
  {
3164
3189
  bool operator()(const ObjectPrx& lhs, const ObjectPrx& rhs) const
3165
3190
  {
@@ -3172,7 +3197,10 @@ struct ProxyIdentityEqual : std::binary_function<bool, ObjectPrx&, ObjectPrx&>
3172
3197
  * and facet in lhs compare less than the identity and facet in rhs, false otherwise.
3173
3198
  * \headerfile Ice/Ice.h
3174
3199
  */
3175
- struct ProxyIdentityAndFacetLess : std::binary_function<bool, ObjectPrx&, ObjectPrx&>
3200
+ struct ProxyIdentityAndFacetLess
3201
+ #if (ICE_CPLUSPLUS < 201703L)
3202
+ : std::binary_function<bool, ObjectPrx&, ObjectPrx&>
3203
+ #endif
3176
3204
  {
3177
3205
  bool operator()(const ObjectPrx& lhs, const ObjectPrx& rhs) const
3178
3206
  {
@@ -3185,7 +3213,10 @@ struct ProxyIdentityAndFacetLess : std::binary_function<bool, ObjectPrx&, Object
3185
3213
  * and facet in lhs compare equal to the identity and facet in rhs, false otherwise.
3186
3214
  * \headerfile Ice/Ice.h
3187
3215
  */
3188
- struct ProxyIdentityAndFacetEqual : std::binary_function<bool, ObjectPrx&, ObjectPrx&>
3216
+ struct ProxyIdentityAndFacetEqual
3217
+ #if (ICE_CPLUSPLUS < 201703L)
3218
+ : std::binary_function<bool, ObjectPrx&, ObjectPrx&>
3219
+ #endif
3189
3220
  {
3190
3221
  bool operator()(const ObjectPrx& lhs, const ObjectPrx& rhs) const
3191
3222
  {
@@ -157,6 +157,7 @@ public:
157
157
  */
158
158
  bool checkSystem() const;
159
159
 
160
+ #ifdef _WIN32
160
161
  /**
161
162
  * Alternative entry point for services that use their own
162
163
  * command-line options. Instead of invoking main(), the
@@ -172,7 +173,6 @@ public:
172
173
  * specified, the version of the Ice installation is used.
173
174
  * @return The application's exit status: EXIT_FAILURE or EXIT_SUCCESS.
174
175
  */
175
- #ifdef _WIN32
176
176
  int run(int argc, const wchar_t* const argv[], const InitializationData& initData = InitializationData(),
177
177
  int version = ICE_INT_VERSION);
178
178
  #endif