diff options
author | Marc Laukien <marc@zeroc.com> | 2001-12-09 17:22:16 +0000 |
---|---|---|
committer | Marc Laukien <marc@zeroc.com> | 2001-12-09 17:22:16 +0000 |
commit | 3509cc24c4f3f6eb5fcf308afc080c7f6407d0c2 (patch) | |
tree | 0c97f7264aeb58ebb83d9f3eecdc50313f35e246 /cpp/src/Ice/BasicStream.cpp | |
parent | initial support for proxies, marshalling (diff) | |
download | ice-3509cc24c4f3f6eb5fcf308afc080c7f6407d0c2.tar.bz2 ice-3509cc24c4f3f6eb5fcf308afc080c7f6407d0c2.tar.xz ice-3509cc24c4f3f6eb5fcf308afc080c7f6407d0c2.zip |
performance improvements
Diffstat (limited to 'cpp/src/Ice/BasicStream.cpp')
-rw-r--r-- | cpp/src/Ice/BasicStream.cpp | 34 |
1 files changed, 11 insertions, 23 deletions
diff --git a/cpp/src/Ice/BasicStream.cpp b/cpp/src/Ice/BasicStream.cpp index 67495714ba1..cc37bf1da1f 100644 --- a/cpp/src/Ice/BasicStream.cpp +++ b/cpp/src/Ice/BasicStream.cpp @@ -24,23 +24,14 @@ using namespace Ice; using namespace IceInternal; IceInternal::BasicStream::BasicStream(const InstancePtr& instance) : - _instance(instance), - _encapsStack(1) + _instance(instance) { + _encapsStack.reserve(4); _encapsStack.resize(1); _encapsStack.back().encoding = 0; _encapsStack.back().start = 0; } -IceInternal::BasicStream::~BasicStream() -{ - // - // No check for exactly one, because an error might have aborted - // marshalling/unmarshalling - // - assert(_encapsStack.size() > 0); -} - InstancePtr IceInternal::BasicStream::instance() const { @@ -682,12 +673,6 @@ IceInternal::BasicStream::write(const string& v) } void -IceInternal::BasicStream::write(const char* v) -{ - write(string(v)); -} - -void IceInternal::BasicStream::write(const vector<string>& v) { write(Int(v.size())); @@ -874,13 +859,14 @@ IceInternal::BasicStream::write(const ObjectPtr& v) } else { - write(""); + static const string empty; + write(empty); } } } bool -IceInternal::BasicStream::read(const char* signatureType, ObjectPtr& v) +IceInternal::BasicStream::read(const string& signatureType, ObjectPtr& v) { Int pos; read(pos); @@ -896,6 +882,7 @@ IceInternal::BasicStream::read(const char* signatureType, ObjectPtr& v) } else { + static const string iceObject("::Ice::Object"); string id; read(id); @@ -904,7 +891,7 @@ IceInternal::BasicStream::read(const char* signatureType, ObjectPtr& v) v = 0; return true; } - else if (id == "::Ice::Object") + else if (id == iceObject) { v = new ::Ice::Object; read(v); @@ -950,7 +937,7 @@ IceInternal::BasicStream::write(const UserException& v) } Int -IceInternal::BasicStream::throwException(const char** throwsBegin, const char** throwsEnd) +IceInternal::BasicStream::throwException(const string* throwsBegin, const string* throwsEnd) { string id; read(id); @@ -964,7 +951,8 @@ IceInternal::BasicStream::throwException(const char** throwsBegin, const char** } catch (UserException& ex) { - for (const char** p = ex.__getExceptionIds(); strcmp(*p, "::Ice::UserException") != 0; ++p) + static const string userException("::Ice::UserException"); + for (const string* p = ex.__getExceptionIds(); *p != userException != 0; ++p) { if (binary_search(throwsBegin, throwsEnd, string(*p))) { @@ -977,7 +965,7 @@ IceInternal::BasicStream::throwException(const char** throwsBegin, const char** } } - pair<const char**, const char**> p = equal_range(throwsBegin, throwsEnd, id); + pair<const string*, const string*> p = equal_range(throwsBegin, throwsEnd, id); if (p.first != p.second) { return p.first - throwsBegin; |