zeroc-ice 3.6.2 → 3.6.3
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.
- checksums.yaml +4 -4
- data/bin/slice2rb +0 -0
- data/ext/Slice.cpp +32 -39
- data/ext/ice/cpp/include/Ice/BasicStream.h +15 -4
- data/ext/ice/cpp/include/Ice/BuiltinSequences.h +2 -2
- data/ext/ice/cpp/include/Ice/Communicator.h +2 -2
- data/ext/ice/cpp/include/Ice/CommunicatorF.h +2 -2
- data/ext/ice/cpp/include/Ice/Connection.h +2 -2
- data/ext/ice/cpp/include/Ice/ConnectionF.h +2 -2
- data/ext/ice/cpp/include/Ice/Current.h +2 -2
- data/ext/ice/cpp/include/Ice/Endpoint.h +2 -2
- data/ext/ice/cpp/include/Ice/EndpointF.h +2 -2
- data/ext/ice/cpp/include/Ice/EndpointTypes.h +2 -2
- data/ext/ice/cpp/include/Ice/FacetMap.h +2 -2
- data/ext/ice/cpp/include/Ice/Identity.h +2 -2
- data/ext/ice/cpp/include/Ice/ImplicitContext.h +2 -2
- data/ext/ice/cpp/include/Ice/ImplicitContextF.h +2 -2
- data/ext/ice/cpp/include/Ice/Instrumentation.h +2 -2
- data/ext/ice/cpp/include/Ice/InstrumentationF.h +2 -2
- data/ext/ice/cpp/include/Ice/LocalException.h +2 -2
- data/ext/ice/cpp/include/Ice/Locator.h +2 -2
- data/ext/ice/cpp/include/Ice/LocatorF.h +2 -2
- data/ext/ice/cpp/include/Ice/Logger.h +2 -2
- data/ext/ice/cpp/include/Ice/LoggerF.h +2 -2
- data/ext/ice/cpp/include/Ice/Metrics.h +2 -2
- data/ext/ice/cpp/include/Ice/ObjectAdapter.h +2 -2
- data/ext/ice/cpp/include/Ice/ObjectAdapterF.h +2 -2
- data/ext/ice/cpp/include/Ice/ObjectFactory.h +2 -2
- data/ext/ice/cpp/include/Ice/ObjectFactoryF.h +2 -2
- data/ext/ice/cpp/include/Ice/Plugin.h +2 -2
- data/ext/ice/cpp/include/Ice/PluginF.h +2 -2
- data/ext/ice/cpp/include/Ice/Process.h +2 -2
- data/ext/ice/cpp/include/Ice/ProcessF.h +2 -2
- data/ext/ice/cpp/include/Ice/Properties.h +2 -2
- data/ext/ice/cpp/include/Ice/PropertiesAdmin.h +2 -2
- data/ext/ice/cpp/include/Ice/PropertiesF.h +2 -2
- data/ext/ice/cpp/include/Ice/RemoteLogger.h +2 -2
- data/ext/ice/cpp/include/Ice/Router.h +2 -2
- data/ext/ice/cpp/include/Ice/RouterF.h +2 -2
- data/ext/ice/cpp/include/Ice/ServantLocator.h +2 -2
- data/ext/ice/cpp/include/Ice/ServantLocatorF.h +2 -2
- data/ext/ice/cpp/include/Ice/SliceChecksumDict.h +2 -2
- data/ext/ice/cpp/include/Ice/SlicedData.h +6 -0
- data/ext/ice/cpp/include/Ice/Version.h +2 -2
- data/ext/ice/cpp/include/IceSSL/ConnectionInfo.h +2 -2
- data/ext/ice/cpp/include/IceSSL/EndpointInfo.h +2 -2
- data/ext/ice/cpp/include/IceUtil/Config.h +86 -26
- data/ext/ice/cpp/include/IceUtil/IconvStringConverter.h +1 -1
- data/ext/ice/cpp/include/IceUtil/Time.h +3 -2
- data/ext/ice/cpp/include/Slice/PythonUtil.h +1 -1
- data/ext/ice/cpp/include/Slice/RubyUtil.h +1 -1
- data/ext/ice/cpp/include/Slice/Util.h +5 -0
- data/ext/ice/cpp/src/Ice/BuiltinSequences.cpp +2 -2
- data/ext/ice/cpp/src/Ice/Communicator.cpp +2 -2
- data/ext/ice/cpp/src/Ice/CommunicatorF.cpp +2 -2
- data/ext/ice/cpp/src/Ice/Connection.cpp +2 -2
- data/ext/ice/cpp/src/Ice/ConnectionF.cpp +2 -2
- data/ext/ice/cpp/src/Ice/ConnectionFactory.cpp +57 -42
- data/ext/ice/cpp/src/Ice/ConnectionFactory.h +2 -0
- data/ext/ice/cpp/src/Ice/Current.cpp +2 -2
- data/ext/ice/cpp/src/Ice/DynamicLibrary.cpp +9 -5
- data/ext/ice/cpp/src/Ice/Endpoint.cpp +2 -2
- data/ext/ice/cpp/src/Ice/EndpointF.cpp +2 -2
- data/ext/ice/cpp/src/Ice/EndpointTypes.cpp +2 -2
- data/ext/ice/cpp/src/Ice/FacetMap.cpp +2 -2
- data/ext/ice/cpp/src/Ice/Identity.cpp +2 -2
- data/ext/ice/cpp/src/Ice/ImplicitContext.cpp +2 -2
- data/ext/ice/cpp/src/Ice/ImplicitContextF.cpp +2 -2
- data/ext/ice/cpp/src/Ice/Incoming.cpp +11 -4
- data/ext/ice/cpp/src/Ice/Instance.cpp +4 -2
- data/ext/ice/cpp/src/Ice/Instrumentation.cpp +2 -2
- data/ext/ice/cpp/src/Ice/InstrumentationF.cpp +2 -2
- data/ext/ice/cpp/src/Ice/InstrumentationI.cpp +1 -3
- data/ext/ice/cpp/src/Ice/LocalException.cpp +2 -2
- data/ext/ice/cpp/src/Ice/Locator.cpp +2 -2
- data/ext/ice/cpp/src/Ice/LocatorF.cpp +2 -2
- data/ext/ice/cpp/src/Ice/Logger.cpp +2 -2
- data/ext/ice/cpp/src/Ice/LoggerF.cpp +2 -2
- data/ext/ice/cpp/src/Ice/LoggerI.cpp +94 -5
- data/ext/ice/cpp/src/Ice/LoggerI.h +7 -1
- data/ext/ice/cpp/src/Ice/Metrics.cpp +2 -2
- data/ext/ice/cpp/src/Ice/Network.cpp +23 -7
- data/ext/ice/cpp/src/Ice/Network.h +1 -1
- data/ext/ice/cpp/src/Ice/ObjectAdapter.cpp +2 -2
- data/ext/ice/cpp/src/Ice/ObjectAdapterF.cpp +2 -2
- data/ext/ice/cpp/src/Ice/ObjectFactory.cpp +2 -2
- data/ext/ice/cpp/src/Ice/ObjectFactoryF.cpp +2 -2
- data/ext/ice/cpp/src/Ice/Plugin.cpp +2 -2
- data/ext/ice/cpp/src/Ice/PluginF.cpp +2 -2
- data/ext/ice/cpp/src/Ice/PluginManagerI.cpp +5 -0
- data/ext/ice/cpp/src/Ice/Process.cpp +2 -2
- data/ext/ice/cpp/src/Ice/ProcessF.cpp +2 -2
- data/ext/ice/cpp/src/Ice/Properties.cpp +2 -2
- data/ext/ice/cpp/src/Ice/PropertiesAdmin.cpp +2 -2
- data/ext/ice/cpp/src/Ice/PropertiesF.cpp +2 -2
- data/ext/ice/cpp/src/Ice/PropertyNames.cpp +4 -3
- data/ext/ice/cpp/src/Ice/PropertyNames.h +1 -1
- data/ext/ice/cpp/src/Ice/RemoteLogger.cpp +2 -2
- data/ext/ice/cpp/src/Ice/RetryQueue.cpp +1 -1
- data/ext/ice/cpp/src/Ice/Router.cpp +2 -2
- data/ext/ice/cpp/src/Ice/RouterF.cpp +2 -2
- data/ext/ice/cpp/src/Ice/ServantLocator.cpp +2 -2
- data/ext/ice/cpp/src/Ice/ServantLocatorF.cpp +2 -2
- data/ext/ice/cpp/src/Ice/SliceChecksumDict.cpp +2 -2
- data/ext/ice/cpp/src/Ice/StreamSocket.cpp +19 -3
- data/ext/ice/cpp/src/Ice/Version.cpp +2 -2
- data/ext/ice/cpp/src/Ice/WSConnector.h +2 -2
- data/ext/ice/cpp/src/IceDiscovery/IceDiscovery.cpp +2 -2
- data/ext/ice/cpp/src/IceDiscovery/IceDiscovery.h +2 -2
- data/ext/ice/cpp/src/IceLocatorDiscovery/IceLocatorDiscovery.cpp +2 -2
- data/ext/ice/cpp/src/IceLocatorDiscovery/IceLocatorDiscovery.h +2 -2
- data/ext/ice/cpp/src/IceSSL/ConnectionInfo.cpp +2 -2
- data/ext/ice/cpp/src/IceSSL/EndpointInfo.cpp +2 -2
- data/ext/ice/cpp/src/IceSSL/OpenSSLEngine.cpp +54 -39
- data/ext/ice/cpp/src/IceSSL/SecureTransportTransceiverI.cpp +5 -8
- data/ext/ice/cpp/src/IceSSL/Util.cpp +155 -4
- data/ext/ice/cpp/src/IceUtil/Cond.cpp +1 -1
- data/ext/ice/cpp/src/IceUtil/FileUtil.cpp +8 -0
- data/ext/ice/cpp/src/IceUtil/FileUtil.h +18 -5
- data/ext/ice/cpp/src/IceUtil/OutputUtil.cpp +5 -5
- data/ext/ice/cpp/src/IceUtil/Time.cpp +25 -17
- data/ext/ice/cpp/src/Slice/JavaUtil.cpp +5 -11
- data/ext/ice/cpp/src/Slice/Preprocessor.cpp +3 -3
- data/ext/ice/cpp/src/Slice/Python.cpp +14 -17
- data/ext/ice/cpp/src/Slice/PythonUtil.cpp +183 -48
- data/ext/ice/cpp/src/Slice/Ruby.cpp +6 -6
- data/ext/ice/cpp/src/Slice/RubyUtil.cpp +0 -10
- data/ext/ice/cpp/src/Slice/Util.cpp +28 -3
- data/ext/ice/mcpp/Makefile +10 -6
- data/ext/ice/mcpp/configed.H +3 -0
- data/ext/ice/mcpp/main.c +2 -2
- data/ext/ice/mcpp/mcpp.gyp +6 -0
- data/ext/ice/mcpp/support.c +1 -1
- data/ext/ice/mcpp/system.H +6 -1
- data/ext/ice/mcpp/system.c +52 -15
- data/ice.gemspec +1 -1
- data/lib/Glacier2/Metrics.rb +1 -1
- data/lib/Glacier2/PermissionsVerifier.rb +1 -1
- data/lib/Glacier2/PermissionsVerifierF.rb +1 -1
- data/lib/Glacier2/Router.rb +1 -1
- data/lib/Glacier2/RouterF.rb +1 -1
- data/lib/Glacier2/SSLInfo.rb +1 -1
- data/lib/Glacier2/Session.rb +1 -1
- data/lib/Ice/BuiltinSequences.rb +1 -1
- data/lib/Ice/Communicator.rb +1 -1
- data/lib/Ice/CommunicatorF.rb +1 -1
- data/lib/Ice/Connection.rb +1 -1
- data/lib/Ice/ConnectionF.rb +1 -1
- data/lib/Ice/Current.rb +1 -1
- data/lib/Ice/Endpoint.rb +1 -1
- data/lib/Ice/EndpointF.rb +1 -1
- data/lib/Ice/EndpointTypes.rb +1 -1
- data/lib/Ice/FacetMap.rb +1 -1
- data/lib/Ice/Identity.rb +1 -1
- data/lib/Ice/ImplicitContext.rb +1 -1
- data/lib/Ice/ImplicitContextF.rb +1 -1
- data/lib/Ice/Instrumentation.rb +1 -1
- data/lib/Ice/InstrumentationF.rb +1 -1
- data/lib/Ice/LocalException.rb +1 -1
- data/lib/Ice/Locator.rb +1 -1
- data/lib/Ice/LocatorF.rb +1 -1
- data/lib/Ice/Logger.rb +1 -1
- data/lib/Ice/LoggerF.rb +1 -1
- data/lib/Ice/Metrics.rb +1 -1
- data/lib/Ice/ObjectAdapterF.rb +1 -1
- data/lib/Ice/ObjectFactory.rb +1 -1
- data/lib/Ice/ObjectFactoryF.rb +1 -1
- data/lib/Ice/Plugin.rb +1 -1
- data/lib/Ice/PluginF.rb +1 -1
- data/lib/Ice/Process.rb +1 -1
- data/lib/Ice/ProcessF.rb +1 -1
- data/lib/Ice/Properties.rb +1 -1
- data/lib/Ice/PropertiesAdmin.rb +1 -1
- data/lib/Ice/PropertiesF.rb +1 -1
- data/lib/Ice/RemoteLogger.rb +1 -1
- data/lib/Ice/Router.rb +1 -1
- data/lib/Ice/RouterF.rb +1 -1
- data/lib/Ice/SliceChecksumDict.rb +1 -1
- data/lib/Ice/Version.rb +1 -1
- data/lib/IceBox/IceBox.rb +1 -1
- data/lib/IceGrid/Admin.rb +1 -1
- data/lib/IceGrid/Descriptor.rb +1 -1
- data/lib/IceGrid/Exception.rb +1 -1
- data/lib/IceGrid/FileParser.rb +1 -1
- data/lib/IceGrid/Locator.rb +1 -1
- data/lib/IceGrid/Observer.rb +1 -1
- data/lib/IceGrid/Query.rb +1 -1
- data/lib/IceGrid/Registry.rb +1 -1
- data/lib/IceGrid/Session.rb +1 -1
- data/lib/IceGrid/UserAccountMapper.rb +1 -1
- data/lib/IcePatch2/FileInfo.rb +1 -1
- data/lib/IcePatch2/FileServer.rb +1 -1
- data/lib/IceStorm/IceStorm.rb +1 -1
- data/lib/IceStorm/Metrics.rb +1 -1
- data/slice/Glacier2/PermissionsVerifier.ice +0 -3
- data/slice/Glacier2/Session.ice +2 -9
- data/slice/Ice/Communicator.ice +3 -3
- data/slice/Ice/ImplicitContext.ice +4 -5
- data/slice/Ice/Instrumentation.ice +26 -26
- data/slice/Ice/LocalException.ice +1 -1
- data/slice/Ice/Locator.ice +5 -3
- data/slice/Ice/Metrics.ice +1 -1
- data/slice/Ice/ObjectFactory.ice +0 -2
- data/slice/Ice/RemoteLogger.ice +32 -32
- data/slice/Ice/Router.ice +3 -0
- data/slice/IceGrid/Session.ice +5 -9
- data/slice/IceLocatorDiscovery/IceLocatorDiscovery.ice +7 -7
- data/slice/IcePatch2/FileServer.ice +28 -34
- metadata +30 -30
|
@@ -332,7 +332,7 @@ IceUtil::Cond::Cond()
|
|
|
332
332
|
throw ThreadSyscallException(__FILE__, __LINE__, rc);
|
|
333
333
|
}
|
|
334
334
|
|
|
335
|
-
#if !defined(
|
|
335
|
+
#if !defined(__hppa) && !defined(__APPLE__) && !defined(__FreeBSD__)
|
|
336
336
|
rc = pthread_condattr_setclock(&attr, CLOCK_MONOTONIC);
|
|
337
337
|
if(rc != 0)
|
|
338
338
|
{
|
|
@@ -344,6 +344,14 @@ IceUtilInternal::FileLock::~FileLock()
|
|
|
344
344
|
unlink(_path);
|
|
345
345
|
}
|
|
346
346
|
|
|
347
|
+
#ifndef __MINGW32__
|
|
348
|
+
wstring
|
|
349
|
+
IceUtilInternal::streamFilename(const string& filename)
|
|
350
|
+
{
|
|
351
|
+
return stringToWstring(filename, IceUtil::getProcessStringConverter());
|
|
352
|
+
}
|
|
353
|
+
#endif
|
|
354
|
+
|
|
347
355
|
IceUtilInternal::ifstream::ifstream()
|
|
348
356
|
{
|
|
349
357
|
}
|
|
@@ -104,14 +104,14 @@ public:
|
|
|
104
104
|
// file.
|
|
105
105
|
//
|
|
106
106
|
FileLock(const std::string&);
|
|
107
|
-
|
|
107
|
+
|
|
108
108
|
//
|
|
109
109
|
// The destructor releases the lock and removes the file.
|
|
110
110
|
//
|
|
111
111
|
virtual ~FileLock();
|
|
112
|
-
|
|
112
|
+
|
|
113
113
|
private:
|
|
114
|
-
|
|
114
|
+
|
|
115
115
|
#ifdef _WIN32
|
|
116
116
|
HANDLE _fd;
|
|
117
117
|
#else
|
|
@@ -136,7 +136,7 @@ public:
|
|
|
136
136
|
|
|
137
137
|
#if defined(_MSC_VER) && (_MSC_VER >= 1900)
|
|
138
138
|
ifstream(const ifstream&) = delete;
|
|
139
|
-
#endif
|
|
139
|
+
#endif
|
|
140
140
|
|
|
141
141
|
private:
|
|
142
142
|
|
|
@@ -159,7 +159,7 @@ public:
|
|
|
159
159
|
|
|
160
160
|
#if defined(_MSC_VER) && (_MSC_VER >= 1900)
|
|
161
161
|
ofstream(const ofstream&) = delete;
|
|
162
|
-
#endif
|
|
162
|
+
#endif
|
|
163
163
|
|
|
164
164
|
private:
|
|
165
165
|
|
|
@@ -168,5 +168,18 @@ private:
|
|
|
168
168
|
void open(const char*, std::ios_base::openmode mode = std::ios_base::out);
|
|
169
169
|
};
|
|
170
170
|
|
|
171
|
+
//
|
|
172
|
+
// Use streamFilename to construct the filename given to std stream classes
|
|
173
|
+
// like ifstream and ofstream.
|
|
174
|
+
//
|
|
175
|
+
#if defined(_WIN32) && !defined(__MINGW32__)
|
|
176
|
+
ICE_UTIL_API std::wstring streamFilename(const std::string&);
|
|
177
|
+
#else
|
|
178
|
+
inline std::string streamFilename(const std::string& filename)
|
|
179
|
+
{
|
|
180
|
+
return filename;
|
|
181
|
+
}
|
|
182
|
+
#endif
|
|
183
|
+
|
|
171
184
|
}
|
|
172
185
|
#endif
|
|
@@ -93,7 +93,7 @@ IceUtilInternal::OutputBase::open(const string& s)
|
|
|
93
93
|
// mismatches on case-insensitive OSs.
|
|
94
94
|
//
|
|
95
95
|
IceUtilInternal::unlink(s);
|
|
96
|
-
_fout.open(s.c_str());
|
|
96
|
+
_fout.open(IceUtilInternal::streamFilename(s).c_str());
|
|
97
97
|
}
|
|
98
98
|
|
|
99
99
|
void
|
|
@@ -170,13 +170,13 @@ IceUtilInternal::OutputBase::currIndent()
|
|
|
170
170
|
return _indent;
|
|
171
171
|
}
|
|
172
172
|
|
|
173
|
-
void
|
|
173
|
+
void
|
|
174
174
|
IceUtilInternal::OutputBase::setIndent(int indentSize)
|
|
175
175
|
{
|
|
176
|
-
_indentSize = indentSize;
|
|
176
|
+
_indentSize = indentSize;
|
|
177
177
|
}
|
|
178
178
|
|
|
179
|
-
void
|
|
179
|
+
void
|
|
180
180
|
IceUtilInternal::OutputBase::setUseTab(bool useTab)
|
|
181
181
|
{
|
|
182
182
|
_useTab = useTab;
|
|
@@ -552,7 +552,7 @@ IceUtilInternal::StartElement::StartElement(const string& name) :
|
|
|
552
552
|
_name(name)
|
|
553
553
|
{
|
|
554
554
|
}
|
|
555
|
-
|
|
555
|
+
|
|
556
556
|
const string&
|
|
557
557
|
IceUtilInternal::StartElement::getName() const
|
|
558
558
|
{
|
|
@@ -63,7 +63,7 @@ InitializeFrequency frequencyInitializer;
|
|
|
63
63
|
}
|
|
64
64
|
#endif
|
|
65
65
|
|
|
66
|
-
#
|
|
66
|
+
#if defined(__APPLE__)
|
|
67
67
|
namespace
|
|
68
68
|
{
|
|
69
69
|
|
|
@@ -137,7 +137,7 @@ IceUtil::Time::now(Clock clock)
|
|
|
137
137
|
# endif
|
|
138
138
|
return Time(static_cast<Int64>(tb.time) * ICE_INT64(1000000) + tb.millitm * 1000);
|
|
139
139
|
}
|
|
140
|
-
#elif defined(
|
|
140
|
+
#elif defined(__hppa)
|
|
141
141
|
//
|
|
142
142
|
// HP does not support CLOCK_MONOTONIC
|
|
143
143
|
//
|
|
@@ -247,22 +247,8 @@ IceUtil::Time::toMicroSecondsDouble() const
|
|
|
247
247
|
std::string
|
|
248
248
|
IceUtil::Time::toDateTime() const
|
|
249
249
|
{
|
|
250
|
-
time_t time = static_cast<long>(_usec / 1000000);
|
|
251
|
-
|
|
252
|
-
struct tm* t;
|
|
253
|
-
#ifdef _WIN32
|
|
254
|
-
t = localtime(&time);
|
|
255
|
-
#else
|
|
256
|
-
struct tm tr;
|
|
257
|
-
localtime_r(&time, &tr);
|
|
258
|
-
t = &tr;
|
|
259
|
-
#endif
|
|
260
|
-
|
|
261
|
-
char buf[32];
|
|
262
|
-
strftime(buf, sizeof(buf), "%x %H:%M:%S", t);
|
|
263
|
-
|
|
264
250
|
std::ostringstream os;
|
|
265
|
-
os <<
|
|
251
|
+
os << toString("%x %H:%M:%S") << ".";
|
|
266
252
|
os.fill('0');
|
|
267
253
|
os.width(3);
|
|
268
254
|
os << static_cast<long>(_usec % 1000000 / 1000);
|
|
@@ -294,6 +280,28 @@ IceUtil::Time::toDuration() const
|
|
|
294
280
|
return os.str();
|
|
295
281
|
}
|
|
296
282
|
|
|
283
|
+
std::string
|
|
284
|
+
IceUtil::Time::toString(const std::string& format) const
|
|
285
|
+
{
|
|
286
|
+
time_t time = static_cast<long>(_usec / 1000000);
|
|
287
|
+
|
|
288
|
+
struct tm* t;
|
|
289
|
+
#ifdef _WIN32
|
|
290
|
+
t = localtime(&time);
|
|
291
|
+
#else
|
|
292
|
+
struct tm tr;
|
|
293
|
+
localtime_r(&time, &tr);
|
|
294
|
+
t = &tr;
|
|
295
|
+
#endif
|
|
296
|
+
|
|
297
|
+
char buf[32];
|
|
298
|
+
if(strftime(buf, sizeof(buf), format.c_str(), t) == 0)
|
|
299
|
+
{
|
|
300
|
+
return std::string();
|
|
301
|
+
}
|
|
302
|
+
return std::string(buf);
|
|
303
|
+
}
|
|
304
|
+
|
|
297
305
|
Time::Time(Int64 usec) :
|
|
298
306
|
_usec(usec)
|
|
299
307
|
{
|
|
@@ -13,9 +13,9 @@
|
|
|
13
13
|
#include <Slice/Util.h>
|
|
14
14
|
#include <Slice/MD5.h>
|
|
15
15
|
#include <IceUtil/Functional.h>
|
|
16
|
+
#include <IceUtil/FileUtil.h>
|
|
16
17
|
|
|
17
18
|
#include <sys/types.h>
|
|
18
|
-
#include <sys/stat.h>
|
|
19
19
|
#include <string.h>
|
|
20
20
|
|
|
21
21
|
#ifdef _WIN32
|
|
@@ -214,10 +214,8 @@ Slice::JavaOutput::openClass(const string& cls, const string& prefix, const stri
|
|
|
214
214
|
path += dir.substr(start);
|
|
215
215
|
}
|
|
216
216
|
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
result = stat(path.c_str(), &st);
|
|
220
|
-
if(result == 0)
|
|
217
|
+
IceUtilInternal::structstat st;
|
|
218
|
+
if(!IceUtilInternal::stat(path, &st))
|
|
221
219
|
{
|
|
222
220
|
if(!(st.st_mode & S_IFDIR))
|
|
223
221
|
{
|
|
@@ -228,12 +226,8 @@ Slice::JavaOutput::openClass(const string& cls, const string& prefix, const stri
|
|
|
228
226
|
}
|
|
229
227
|
continue;
|
|
230
228
|
}
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
#else
|
|
234
|
-
result = ::mkdir(path.c_str(), S_IRWXU | S_IRWXG | S_IRWXO);
|
|
235
|
-
#endif
|
|
236
|
-
if(result != 0)
|
|
229
|
+
|
|
230
|
+
if(IceUtilInternal::mkdir(path, 0777) != 0)
|
|
237
231
|
{
|
|
238
232
|
ostringstream os;
|
|
239
233
|
os << "cannot create directory `" << path << "': " << strerror(errno);
|
|
@@ -236,10 +236,10 @@ Slice::Preprocessor::preprocess(bool keepComments, const string& extraArgs)
|
|
|
236
236
|
// process call _tempnam before any of them call fopen and
|
|
237
237
|
// they will end up using the same tmp file.
|
|
238
238
|
//
|
|
239
|
-
|
|
239
|
+
wchar_t* name = _wtempnam(0, IceUtil::stringToWstring("slice-" + IceUtil::generateUUID()).c_str());
|
|
240
240
|
if(name)
|
|
241
241
|
{
|
|
242
|
-
_cppFile = name;
|
|
242
|
+
_cppFile = IceUtil::wstringToString(name);
|
|
243
243
|
free(name);
|
|
244
244
|
_cppHandle = IceUtilInternal::fopen(_cppFile, "w+");
|
|
245
245
|
}
|
|
@@ -725,7 +725,7 @@ Slice::Preprocessor::checkInputFile()
|
|
|
725
725
|
return false;
|
|
726
726
|
}
|
|
727
727
|
|
|
728
|
-
ifstream test(_fileName
|
|
728
|
+
IceUtilInternal::ifstream test(_fileName);
|
|
729
729
|
if(!test)
|
|
730
730
|
{
|
|
731
731
|
getErrorStream() << _path << ": error: cannot open `" << _fileName << "' for reading" << endl;
|
|
@@ -187,10 +187,8 @@ PackageVisitor::visitModuleEnd(const ModulePtr& p)
|
|
|
187
187
|
void
|
|
188
188
|
PackageVisitor::createDirectory(const string& dir)
|
|
189
189
|
{
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
result = stat(dir.c_str(), &st);
|
|
193
|
-
if(result == 0)
|
|
190
|
+
IceUtilInternal::structstat st;
|
|
191
|
+
if(!IceUtilInternal::stat(dir, &st))
|
|
194
192
|
{
|
|
195
193
|
if(!(st.st_mode & S_IFDIR))
|
|
196
194
|
{
|
|
@@ -201,13 +199,8 @@ PackageVisitor::createDirectory(const string& dir)
|
|
|
201
199
|
}
|
|
202
200
|
return;
|
|
203
201
|
}
|
|
204
|
-
#ifdef _WIN32
|
|
205
|
-
result = _mkdir(dir.c_str());
|
|
206
|
-
#else
|
|
207
|
-
result = mkdir(dir.c_str(), S_IRWXU | S_IRWXG | S_IRWXO);
|
|
208
|
-
#endif
|
|
209
202
|
|
|
210
|
-
if(
|
|
203
|
+
if(IceUtilInternal::mkdir(dir, 0777) != 0)
|
|
211
204
|
{
|
|
212
205
|
ostringstream os;
|
|
213
206
|
os << "cannot create directory `" << dir << "': " << strerror(errno);
|
|
@@ -254,10 +247,10 @@ PackageVisitor::readInit(const string& dir, StringList& modules, StringList& sub
|
|
|
254
247
|
{
|
|
255
248
|
string initPath = dir + "/__init__.py";
|
|
256
249
|
|
|
257
|
-
|
|
258
|
-
if(stat(initPath
|
|
250
|
+
IceUtilInternal::structstat st;
|
|
251
|
+
if(!IceUtilInternal::stat(initPath, &st))
|
|
259
252
|
{
|
|
260
|
-
ifstream in(initPath
|
|
253
|
+
IceUtilInternal::ifstream in(initPath);
|
|
261
254
|
if(!in)
|
|
262
255
|
{
|
|
263
256
|
ostringstream os;
|
|
@@ -358,7 +351,7 @@ PackageVisitor::writeInit(const string& dir, const string& name, const StringLis
|
|
|
358
351
|
{
|
|
359
352
|
string initPath = dir + "/__init__.py";
|
|
360
353
|
|
|
361
|
-
ofstream os(initPath
|
|
354
|
+
IceUtilInternal::ofstream os(initPath);
|
|
362
355
|
if(!os)
|
|
363
356
|
{
|
|
364
357
|
ostringstream os;
|
|
@@ -388,7 +381,7 @@ PackageVisitor::writeInit(const string& dir, const string& name, const StringLis
|
|
|
388
381
|
}
|
|
389
382
|
|
|
390
383
|
void
|
|
391
|
-
usage(const
|
|
384
|
+
usage(const string& n)
|
|
392
385
|
{
|
|
393
386
|
getErrorStream() << "Usage: " << n << " [options] slice-files...\n";
|
|
394
387
|
getErrorStream() <<
|
|
@@ -416,7 +409,7 @@ usage(const char* n)
|
|
|
416
409
|
}
|
|
417
410
|
|
|
418
411
|
int
|
|
419
|
-
Slice::Python::compile(
|
|
412
|
+
Slice::Python::compile(const vector<string>& argv)
|
|
420
413
|
{
|
|
421
414
|
IceUtilInternal::Options opts;
|
|
422
415
|
opts.addOpt("h", "help");
|
|
@@ -441,7 +434,7 @@ Slice::Python::compile(int argc, char* argv[])
|
|
|
441
434
|
vector<string> args;
|
|
442
435
|
try
|
|
443
436
|
{
|
|
444
|
-
args = opts.parse(
|
|
437
|
+
args = opts.parse(argv);
|
|
445
438
|
}
|
|
446
439
|
catch(const IceUtilInternal::BadOptException& e)
|
|
447
440
|
{
|
|
@@ -665,6 +658,10 @@ Slice::Python::compile(int argc, char* argv[])
|
|
|
665
658
|
}
|
|
666
659
|
FileTracker::instance()->addFile(file);
|
|
667
660
|
|
|
661
|
+
//
|
|
662
|
+
// Python magic comment to set the file encoding, it must be first or second line
|
|
663
|
+
//
|
|
664
|
+
out << "# -*- coding: utf-8 -*-\n";
|
|
668
665
|
printHeader(out);
|
|
669
666
|
printGeneratedHeader(out, base + ".ice", "#");
|
|
670
667
|
//
|
|
@@ -196,6 +196,44 @@ private:
|
|
|
196
196
|
}
|
|
197
197
|
}
|
|
198
198
|
|
|
199
|
+
string
|
|
200
|
+
u32CodePoint(unsigned int value)
|
|
201
|
+
{
|
|
202
|
+
ostringstream s;
|
|
203
|
+
s << "\\U";
|
|
204
|
+
s << hex;
|
|
205
|
+
s.width(8);
|
|
206
|
+
s.fill('0');
|
|
207
|
+
s << value;
|
|
208
|
+
return s.str();
|
|
209
|
+
}
|
|
210
|
+
|
|
211
|
+
void
|
|
212
|
+
writeU8Buffer(const vector<unsigned char>& u8buffer, ostringstream& out)
|
|
213
|
+
{
|
|
214
|
+
vector<unsigned int> u32buffer;
|
|
215
|
+
IceUtilInternal::ConversionResult result = convertUTF8ToUTF32(u8buffer, u32buffer, IceUtil::lenientConversion);
|
|
216
|
+
switch(result)
|
|
217
|
+
{
|
|
218
|
+
case conversionOK:
|
|
219
|
+
break;
|
|
220
|
+
case sourceExhausted:
|
|
221
|
+
throw IceUtil::IllegalConversionException(__FILE__, __LINE__, "string source exhausted");
|
|
222
|
+
case sourceIllegal:
|
|
223
|
+
throw IceUtil::IllegalConversionException(__FILE__, __LINE__, "string source illegal");
|
|
224
|
+
default:
|
|
225
|
+
{
|
|
226
|
+
assert(0);
|
|
227
|
+
throw IceUtil::IllegalConversionException(__FILE__, __LINE__);
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
|
|
231
|
+
for(vector<unsigned int>::const_iterator c = u32buffer.begin(); c != u32buffer.end(); ++c)
|
|
232
|
+
{
|
|
233
|
+
out << u32CodePoint(*c);
|
|
234
|
+
}
|
|
235
|
+
}
|
|
236
|
+
|
|
199
237
|
static string
|
|
200
238
|
lookupKwd(const string& name)
|
|
201
239
|
{
|
|
@@ -518,17 +556,7 @@ Slice::Python::CodeVisitor::visitClassDefStart(const ClassDefPtr& p)
|
|
|
518
556
|
//
|
|
519
557
|
ClassList allBases = p->allBases();
|
|
520
558
|
StringList ids;
|
|
521
|
-
#if defined(__IBMCPP__) && defined(NDEBUG)
|
|
522
|
-
//
|
|
523
|
-
// VisualAge C++ 6.0 does not see that ClassDef is a Contained,
|
|
524
|
-
// when inlining is on. The code below issues a warning: better
|
|
525
|
-
// than an error!
|
|
526
|
-
//
|
|
527
|
-
transform(allBases.begin(), allBases.end(), back_inserter(ids),
|
|
528
|
-
IceUtil::constMemFun<string,ClassDef>(&Contained::scoped));
|
|
529
|
-
#else
|
|
530
559
|
transform(allBases.begin(), allBases.end(), back_inserter(ids), IceUtil::constMemFun(&Contained::scoped));
|
|
531
|
-
#endif
|
|
532
560
|
StringList other;
|
|
533
561
|
other.push_back(scoped);
|
|
534
562
|
other.push_back("::Ice::Object");
|
|
@@ -1847,6 +1875,9 @@ Slice::Python::CodeVisitor::writeConstantValue(const TypePtr& type, const Syntax
|
|
|
1847
1875
|
}
|
|
1848
1876
|
case Slice::Builtin::KindString:
|
|
1849
1877
|
{
|
|
1878
|
+
ostringstream sv2;
|
|
1879
|
+
ostringstream sv3;
|
|
1880
|
+
|
|
1850
1881
|
//
|
|
1851
1882
|
// Expand strings into the basic source character set. We can't use isalpha() and the like
|
|
1852
1883
|
// here because they are sensitive to the current locale.
|
|
@@ -1857,8 +1888,6 @@ Slice::Python::CodeVisitor::writeConstantValue(const TypePtr& type, const Syntax
|
|
|
1857
1888
|
"_{}[]#()<>%:;.?*+-/^&|~!=, '";
|
|
1858
1889
|
static const set<char> charSet(basicSourceChars.begin(), basicSourceChars.end());
|
|
1859
1890
|
|
|
1860
|
-
_out << "\""; // Opening "
|
|
1861
|
-
|
|
1862
1891
|
for(size_t i = 0; i < value.size();)
|
|
1863
1892
|
{
|
|
1864
1893
|
char c = value[i];
|
|
@@ -1866,7 +1895,7 @@ Slice::Python::CodeVisitor::writeConstantValue(const TypePtr& type, const Syntax
|
|
|
1866
1895
|
{
|
|
1867
1896
|
case '"':
|
|
1868
1897
|
{
|
|
1869
|
-
|
|
1898
|
+
sv2 << "\\\"";
|
|
1870
1899
|
break;
|
|
1871
1900
|
}
|
|
1872
1901
|
case '\\':
|
|
@@ -1894,7 +1923,7 @@ Slice::Python::CodeVisitor::writeConstantValue(const TypePtr& type, const Syntax
|
|
|
1894
1923
|
//
|
|
1895
1924
|
// Convert codepoint to UTF8 bytes and write the escaped bytes
|
|
1896
1925
|
//
|
|
1897
|
-
|
|
1926
|
+
sv2 << s.substr(0, s.size() - 1);
|
|
1898
1927
|
|
|
1899
1928
|
size_t sz = value[j] == 'U' ? 8 : 4;
|
|
1900
1929
|
string codepoint = value.substr(j + 1, sz);
|
|
@@ -1931,40 +1960,40 @@ Slice::Python::CodeVisitor::writeConstantValue(const TypePtr& type, const Syntax
|
|
|
1931
1960
|
s << oct;
|
|
1932
1961
|
s << static_cast<unsigned int>(*q);
|
|
1933
1962
|
}
|
|
1934
|
-
|
|
1963
|
+
sv2 << s.str();
|
|
1935
1964
|
|
|
1936
1965
|
i = j + 1 + sz;
|
|
1937
1966
|
}
|
|
1938
1967
|
else
|
|
1939
1968
|
{
|
|
1940
|
-
|
|
1969
|
+
sv2 << s;
|
|
1941
1970
|
i = j;
|
|
1942
1971
|
}
|
|
1943
1972
|
continue;
|
|
1944
1973
|
}
|
|
1945
1974
|
case '\r':
|
|
1946
1975
|
{
|
|
1947
|
-
|
|
1976
|
+
sv2 << "\\r";
|
|
1948
1977
|
break;
|
|
1949
1978
|
}
|
|
1950
1979
|
case '\n':
|
|
1951
1980
|
{
|
|
1952
|
-
|
|
1981
|
+
sv2 << "\\n";
|
|
1953
1982
|
break;
|
|
1954
1983
|
}
|
|
1955
1984
|
case '\t':
|
|
1956
1985
|
{
|
|
1957
|
-
|
|
1986
|
+
sv2 << "\\t";
|
|
1958
1987
|
break;
|
|
1959
1988
|
}
|
|
1960
1989
|
case '\b':
|
|
1961
1990
|
{
|
|
1962
|
-
|
|
1991
|
+
sv2 << "\\b";
|
|
1963
1992
|
break;
|
|
1964
1993
|
}
|
|
1965
1994
|
case '\f':
|
|
1966
1995
|
{
|
|
1967
|
-
|
|
1996
|
+
sv2 << "\\f";
|
|
1968
1997
|
break;
|
|
1969
1998
|
}
|
|
1970
1999
|
default:
|
|
@@ -1978,19 +2007,140 @@ Slice::Python::CodeVisitor::writeConstantValue(const TypePtr& type, const Syntax
|
|
|
1978
2007
|
s.width(3);
|
|
1979
2008
|
s.fill('0');
|
|
1980
2009
|
s << static_cast<unsigned>(uc);
|
|
1981
|
-
|
|
2010
|
+
sv2 << s.str();
|
|
1982
2011
|
}
|
|
1983
2012
|
else
|
|
1984
2013
|
{
|
|
1985
|
-
|
|
2014
|
+
sv2 << c; // Print normally if in basic source character set.
|
|
1986
2015
|
}
|
|
1987
2016
|
break;
|
|
1988
2017
|
}
|
|
1989
2018
|
}
|
|
1990
2019
|
++i;
|
|
1991
2020
|
}
|
|
2021
|
+
|
|
2022
|
+
vector<unsigned char> u8buffer; // Buffer to convert multibyte characters
|
|
2023
|
+
|
|
2024
|
+
for(size_t i = 0; i < value.size();)
|
|
2025
|
+
{
|
|
2026
|
+
if(charSet.find(value[i]) == charSet.end())
|
|
2027
|
+
{
|
|
2028
|
+
char c = value[i];
|
|
2029
|
+
if(static_cast<unsigned char>(c) < 128) // Single byte character
|
|
2030
|
+
{
|
|
2031
|
+
//
|
|
2032
|
+
// Print as unicode if not in basic source character set
|
|
2033
|
+
//
|
|
2034
|
+
switch(c)
|
|
2035
|
+
{
|
|
2036
|
+
//
|
|
2037
|
+
// Don't encode this special characters as universal characters
|
|
2038
|
+
//
|
|
2039
|
+
case '\r':
|
|
2040
|
+
{
|
|
2041
|
+
sv3 << "\\r";
|
|
2042
|
+
break;
|
|
2043
|
+
}
|
|
2044
|
+
case '\n':
|
|
2045
|
+
{
|
|
2046
|
+
sv3 << "\\n";
|
|
2047
|
+
break;
|
|
2048
|
+
}
|
|
2049
|
+
case '\\':
|
|
2050
|
+
{
|
|
2051
|
+
sv3 << "\\";
|
|
2052
|
+
break;
|
|
2053
|
+
}
|
|
2054
|
+
default:
|
|
2055
|
+
{
|
|
2056
|
+
sv3 << u32CodePoint(c);
|
|
2057
|
+
break;
|
|
2058
|
+
}
|
|
2059
|
+
}
|
|
2060
|
+
}
|
|
2061
|
+
else
|
|
2062
|
+
{
|
|
2063
|
+
u8buffer.push_back(value[i]);
|
|
2064
|
+
}
|
|
2065
|
+
}
|
|
2066
|
+
else
|
|
2067
|
+
{
|
|
2068
|
+
//
|
|
2069
|
+
// Write any pedding characters in the utf8 buffer
|
|
2070
|
+
//
|
|
2071
|
+
if(!u8buffer.empty())
|
|
2072
|
+
{
|
|
2073
|
+
writeU8Buffer(u8buffer, sv3);
|
|
2074
|
+
u8buffer.clear();
|
|
2075
|
+
}
|
|
2076
|
+
switch(value[i])
|
|
2077
|
+
{
|
|
2078
|
+
case '\\':
|
|
2079
|
+
{
|
|
2080
|
+
string s = "\\";
|
|
2081
|
+
size_t j = i + 1;
|
|
2082
|
+
for(; j < value.size(); ++j)
|
|
2083
|
+
{
|
|
2084
|
+
if(value[j] != '\\')
|
|
2085
|
+
{
|
|
2086
|
+
break;
|
|
2087
|
+
}
|
|
2088
|
+
s += "\\";
|
|
2089
|
+
}
|
|
2090
|
+
|
|
2091
|
+
//
|
|
2092
|
+
// An even number of slash \ will escape the backslash and
|
|
2093
|
+
// the codepoint will be interpreted as its charaters
|
|
2094
|
+
//
|
|
2095
|
+
// \\U00000041 - ['\\', 'U', '0', '0', '0', '0', '0', '0', '4', '1']
|
|
2096
|
+
// \\\U00000041 - ['\\', 'A'] (41 is the codepoint for 'A')
|
|
2097
|
+
//
|
|
2098
|
+
if(s.size() % 2 != 0 && (value[j] == 'U' || value[j] == 'u'))
|
|
2099
|
+
{
|
|
2100
|
+
size_t sz = value[j] == 'U' ? 8 : 4;
|
|
2101
|
+
sv3 << s.substr(0, s.size() - 1);
|
|
2102
|
+
i = j + 1;
|
|
2103
|
+
|
|
2104
|
+
string codepoint = value.substr(j + 1, sz);
|
|
2105
|
+
assert(codepoint.size() == sz);
|
|
2106
|
+
|
|
2107
|
+
IceUtil::Int64 v = IceUtilInternal::strToInt64(codepoint.c_str(), 0, 16);
|
|
2108
|
+
sv3 << u32CodePoint(static_cast<unsigned int>(v));
|
|
2109
|
+
i = j + 1 + sz;
|
|
2110
|
+
}
|
|
2111
|
+
else
|
|
2112
|
+
{
|
|
2113
|
+
sv3 << s;
|
|
2114
|
+
i = j;
|
|
2115
|
+
}
|
|
2116
|
+
continue;
|
|
2117
|
+
}
|
|
2118
|
+
case '"':
|
|
2119
|
+
{
|
|
2120
|
+
sv3 << "\\";
|
|
2121
|
+
break;
|
|
2122
|
+
}
|
|
2123
|
+
}
|
|
2124
|
+
sv3 << value[i]; // Print normally if in basic source character set
|
|
2125
|
+
}
|
|
2126
|
+
i++;
|
|
2127
|
+
}
|
|
2128
|
+
|
|
2129
|
+
//
|
|
2130
|
+
// Write any pedding characters in the utf8 buffer
|
|
2131
|
+
//
|
|
2132
|
+
if(!u8buffer.empty())
|
|
2133
|
+
{
|
|
2134
|
+
writeU8Buffer(u8buffer, sv3);
|
|
2135
|
+
u8buffer.clear();
|
|
2136
|
+
}
|
|
2137
|
+
|
|
1992
2138
|
|
|
1993
|
-
_out << "\""
|
|
2139
|
+
_out << "\"" << sv2.str() << "\"";
|
|
2140
|
+
if(sv2.str() != sv3.str())
|
|
2141
|
+
{
|
|
2142
|
+
_out << " if _version_info_[0] < 3 else \"" << sv3.str() << "\"";
|
|
2143
|
+
}
|
|
1994
2144
|
break;
|
|
1995
2145
|
}
|
|
1996
2146
|
case Slice::Builtin::KindObject:
|
|
@@ -2291,14 +2441,10 @@ Slice::Python::CodeVisitor::writeDocstring(const string& comment, const string&
|
|
|
2291
2441
|
|
|
2292
2442
|
for(StringVec::const_iterator q = lines.begin(); q != lines.end(); ++q)
|
|
2293
2443
|
{
|
|
2294
|
-
|
|
2295
|
-
{
|
|
2296
|
-
_out << nl;
|
|
2297
|
-
}
|
|
2298
|
-
_out << *q;
|
|
2444
|
+
_out << nl << *q;
|
|
2299
2445
|
}
|
|
2300
2446
|
|
|
2301
|
-
_out << "\"\"\"";
|
|
2447
|
+
_out << nl << "\"\"\"";
|
|
2302
2448
|
}
|
|
2303
2449
|
|
|
2304
2450
|
void
|
|
@@ -2314,11 +2460,7 @@ Slice::Python::CodeVisitor::writeDocstring(const string& comment, const DataMemb
|
|
|
2314
2460
|
|
|
2315
2461
|
for(StringVec::const_iterator q = lines.begin(); q != lines.end(); ++q)
|
|
2316
2462
|
{
|
|
2317
|
-
|
|
2318
|
-
{
|
|
2319
|
-
_out << nl;
|
|
2320
|
-
}
|
|
2321
|
-
_out << *q;
|
|
2463
|
+
_out << nl << *q;
|
|
2322
2464
|
}
|
|
2323
2465
|
|
|
2324
2466
|
if(!members.empty())
|
|
@@ -2360,7 +2502,7 @@ Slice::Python::CodeVisitor::writeDocstring(const string& comment, const DataMemb
|
|
|
2360
2502
|
}
|
|
2361
2503
|
}
|
|
2362
2504
|
|
|
2363
|
-
_out << "\"\"\"";
|
|
2505
|
+
_out << nl << "\"\"\"";
|
|
2364
2506
|
}
|
|
2365
2507
|
|
|
2366
2508
|
void
|
|
@@ -2376,11 +2518,7 @@ Slice::Python::CodeVisitor::writeDocstring(const string& comment, const Enumerat
|
|
|
2376
2518
|
|
|
2377
2519
|
for(StringVec::const_iterator q = lines.begin(); q != lines.end(); ++q)
|
|
2378
2520
|
{
|
|
2379
|
-
|
|
2380
|
-
{
|
|
2381
|
-
_out << nl;
|
|
2382
|
-
}
|
|
2383
|
-
_out << *q;
|
|
2521
|
+
_out << nl << *q;
|
|
2384
2522
|
}
|
|
2385
2523
|
|
|
2386
2524
|
if(!enums.empty())
|
|
@@ -2422,7 +2560,7 @@ Slice::Python::CodeVisitor::writeDocstring(const string& comment, const Enumerat
|
|
|
2422
2560
|
}
|
|
2423
2561
|
}
|
|
2424
2562
|
|
|
2425
|
-
_out << "\"\"\"";
|
|
2563
|
+
_out << nl << "\"\"\"";
|
|
2426
2564
|
}
|
|
2427
2565
|
|
|
2428
2566
|
bool
|
|
@@ -2665,11 +2803,7 @@ Slice::Python::CodeVisitor::writeDocstring(const OperationPtr& op, DocstringMode
|
|
|
2665
2803
|
{
|
|
2666
2804
|
for(StringVec::const_iterator q = comment.description.begin(); q != comment.description.end(); ++q)
|
|
2667
2805
|
{
|
|
2668
|
-
|
|
2669
|
-
{
|
|
2670
|
-
_out << nl;
|
|
2671
|
-
}
|
|
2672
|
-
_out << *q;
|
|
2806
|
+
_out << nl << *q;
|
|
2673
2807
|
}
|
|
2674
2808
|
}
|
|
2675
2809
|
|
|
@@ -2798,7 +2932,7 @@ Slice::Python::CodeVisitor::writeDocstring(const OperationPtr& op, DocstringMode
|
|
|
2798
2932
|
_out << nl << r->first << " -- " << r->second;
|
|
2799
2933
|
}
|
|
2800
2934
|
}
|
|
2801
|
-
_out << "\"\"\"";
|
|
2935
|
+
_out << nl << "\"\"\"";
|
|
2802
2936
|
}
|
|
2803
2937
|
|
|
2804
2938
|
void
|
|
@@ -2807,6 +2941,7 @@ Slice::Python::generate(const UnitPtr& un, bool all, bool checksum, const vector
|
|
|
2807
2941
|
Slice::Python::MetaDataVisitor visitor;
|
|
2808
2942
|
un->visit(&visitor, false);
|
|
2809
2943
|
|
|
2944
|
+
out << nl << "from sys import version_info as _version_info_";
|
|
2810
2945
|
out << nl << "import Ice, IcePy";
|
|
2811
2946
|
|
|
2812
2947
|
if(!all)
|