diff options
author | Jose <jose@zeroc.com> | 2011-12-21 23:52:28 +0100 |
---|---|---|
committer | Jose <jose@zeroc.com> | 2011-12-21 23:52:28 +0100 |
commit | 61e6e2ef7faa507d8fa8f4ee560c1095b26781c7 (patch) | |
tree | 4a428b2c5af4e0fcc131d2ea1215b65aa17a1a17 /cpp/src | |
parent | ICE-4719 - .NET partial classe and user generated constructors (diff) | |
download | ice-61e6e2ef7faa507d8fa8f4ee560c1095b26781c7.tar.bz2 ice-61e6e2ef7faa507d8fa8f4ee560c1095b26781c7.tar.xz ice-61e6e2ef7faa507d8fa8f4ee560c1095b26781c7.zip |
ICE-4592 UTF8BufferI getMoreBytes
Diffstat (limited to 'cpp/src')
-rw-r--r-- | cpp/src/Ice/Instance.cpp | 43 | ||||
-rw-r--r-- | cpp/src/Ice/Instance.h | 17 | ||||
-rw-r--r-- | cpp/src/Ice/StringConverter.cpp | 61 |
3 files changed, 60 insertions, 61 deletions
diff --git a/cpp/src/Ice/Instance.cpp b/cpp/src/Ice/Instance.cpp index 220da4c0d25..bb3505b5096 100644 --- a/cpp/src/Ice/Instance.cpp +++ b/cpp/src/Ice/Instance.cpp @@ -1358,49 +1358,6 @@ IceInternal::Instance::destroy() return true; } -IceInternal::UTF8BufferI::UTF8BufferI() : - _buffer(0), - _offset(0) -{ -} - -IceInternal::UTF8BufferI::~UTF8BufferI() -{ - free(_buffer); -} - -Byte* -IceInternal::UTF8BufferI::getMoreBytes(size_t howMany, Byte* firstUnused) -{ - if(_buffer == 0) - { - _buffer = (Byte*)malloc(howMany); - } - else - { - assert(firstUnused != 0); - _offset = firstUnused - _buffer; - _buffer = (Byte*)realloc(_buffer, _offset + howMany); - } - - return _buffer + _offset; -} - -Byte* -IceInternal::UTF8BufferI::getBuffer() -{ - return _buffer; -} - -void -IceInternal::UTF8BufferI::reset() -{ - free(_buffer); - _buffer = 0; - _offset = 0; -} - - IceInternal::ProcessI::ProcessI(const CommunicatorPtr& communicator) : _communicator(communicator) { diff --git a/cpp/src/Ice/Instance.h b/cpp/src/Ice/Instance.h index fec5d2257e2..81cb3f9bf06 100644 --- a/cpp/src/Ice/Instance.h +++ b/cpp/src/Ice/Instance.h @@ -143,23 +143,6 @@ private: std::set<std::string> _adminFacetFilter; }; -class UTF8BufferI : public Ice::UTF8Buffer -{ -public: - - UTF8BufferI(); - ~UTF8BufferI(); - - Ice::Byte* getMoreBytes(size_t howMany, Ice::Byte* firstUnused); - Ice::Byte* getBuffer(); - void reset(); - -private: - - Ice::Byte* _buffer; - size_t _offset; -}; - class ProcessI : public Ice::Process { public: diff --git a/cpp/src/Ice/StringConverter.cpp b/cpp/src/Ice/StringConverter.cpp index 05de87a5d92..f4dd0e36243 100644 --- a/cpp/src/Ice/StringConverter.cpp +++ b/cpp/src/Ice/StringConverter.cpp @@ -24,6 +24,65 @@ using namespace IceUtil; using namespace IceUtilInternal; using namespace std; +namespace +{ + +class UTF8BufferI : public Ice::UTF8Buffer +{ +public: + + UTF8BufferI() : + _buffer(0), + _offset(0) + { + } + + ~UTF8BufferI() + { + free(_buffer); + } + + Ice::Byte* getMoreBytes(size_t howMany, Byte* firstUnused) + { + if(_buffer == 0) + { + _buffer = (Byte*)malloc(howMany); + } + else + { + assert(firstUnused != 0); + _offset = firstUnused - _buffer; + _buffer = (Byte*)realloc(_buffer, _offset + howMany); + } + + if(!_buffer) + { + throw std::bad_alloc(); + } + return _buffer + _offset; + } + + Ice::Byte* getBuffer() + { + return _buffer; + } + + void reset() + { + free(_buffer); + _buffer = 0; + _offset = 0; + } + +private: + + Ice::Byte* _buffer; + size_t _offset; +}; +} + + + namespace Ice { @@ -353,7 +412,7 @@ Ice::nativeToUTF8(const Ice::StringConverterPtr& converter, const string& str) { return str; } - IceInternal::UTF8BufferI buffer; + UTF8BufferI buffer; Ice::Byte* last = converter->toUTF8(str.data(), str.data() + str.size(), buffer); return string(reinterpret_cast<const char*>(buffer.getBuffer()), last - buffer.getBuffer()); } |