zeroc-ice 3.7.3 → 3.7.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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