// ********************************************************************** // // Copyright (c) 2001 // MutableRealms, Inc. // Huntsville, AL, USA // // All Rights Reserved // // ********************************************************************** #ifndef ICE_STREAM_H #define ICE_STREAM_H #include #include #include #include namespace Ice { class UserException; } namespace IceInternal { class ICE_API BasicStream : public Buffer { public: BasicStream(const InstancePtr&); ~BasicStream(); InstancePtr instance() const; void swap(BasicStream&); void resize(int); void reserve(int); void startWriteEncaps(); void endWriteEncaps(); void startReadEncaps(); void endReadEncaps(); void skipEncaps(); void write(Ice::Byte v) { b.push_back(v); } void write(const std::vector&); void read(Ice::Byte&); void read(std::vector&); void write(bool v) { b.push_back(static_cast(v)); } void write(const std::vector&); void read(bool&); void read(std::vector&); void write(Ice::Short); void write(const std::vector&); void read(Ice::Short&); void read(std::vector&); void write(Ice::Int); void write(const std::vector&); void read(Ice::Int&); void read(std::vector&); void write(Ice::Long); void write(const std::vector&); void read(Ice::Long&); void read(std::vector&); void write(Ice::Float); void write(const std::vector&); void read(Ice::Float&); void read(std::vector&); void write(Ice::Double); void write(const std::vector&); void read(Ice::Double&); void read(std::vector&); void write(const std::string&); void write(const char*); void write(const std::vector&); void read(std::string&); void read(std::vector&); void write(const std::wstring&); void write(const wchar_t*); void write(const std::vector&); void read(std::wstring&); void read(std::vector&); void write(const Ice::ObjectPrx&); void read(Ice::ObjectPrx&); void write(const Ice::ObjectPtr&); bool read(const char*, Ice::ObjectPtr&); void write(const Ice::UserException&); ::Ice::Int throwException(const char**, const char**); private: InstancePtr _instance; struct Encaps { Container::size_type start; Ice::Byte encoding; std::vector stringsRead; std::map stringsWritten; std::vector wstringsRead; std::map wstringsWritten; std::vector objectsRead; std::map objectsWritten; }; std::vector _encapsStack; }; } #endif