Main Page   Class Hierarchy   Alphabetical List   Data Structures   File List   Data Fields  

streams.OStream.h

00001 /*----------------------------------------------------------------------------
00002   SWORD 2000 - Software With Objects for Rapid Development
00003   Copyright (C) 2003 Eric NICOLAS
00004   ----------------------------------------------------------------------------
00005   SWORD is free software; you can redistribute it and/or modify
00006   it under the terms of the GNU Lesser General Public License as published by
00007   the Free Software Foundation; either version 2 of the License, or
00008   (at your option) any later version.
00009 
00010   SWORD is distributed in the hope that it will be useful,
00011   but WITHOUT ANY WARRANTY; without even the implied warranty of
00012   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00013   GNU Lesser General Public License for more details.
00014 
00015   You should have received a copy of the GNU Lesser General Public License
00016   along with SWORD; if not, write to the Free Software
00017   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
00018   --------------------------------------------------------------------------*/
00019 #ifndef _SWORD_STREAMS_OSTREAM_
00020 #define _SWORD_STREAMS_OSTREAM_
00021 
00022 namespace sword {
00023 
00025 
00029         class SWORDDECL OStream {
00030         public:
00031                 OStream()  {}
00032                 virtual ~OStream() {}
00033 
00034                 // output to media
00035                 OStream &operator<<(const int8          value);
00036                 OStream &operator<<(const int16         value);
00037                 OStream &operator<<(const int32         value);
00038                 OStream &operator<<(const int64         value);
00039 
00040                 OStream &operator<<(const word8         value);
00041                 OStream &operator<<(const word16        value);
00042                 OStream &operator<<(const word32        value);
00043                 OStream &operator<<(const word64        value);
00044 
00045                 OStream &operator<<(const float32       value);
00046                 OStream &operator<<(const float64       value);
00047 
00048                 OStream &operator<<(const bool          value);
00049                 OStream &operator<<(const char          value);
00050                 OStream &operator<<(const std::string&  value);
00051                 OStream &operator<<(const char          value[]);
00052                 OStream &operator<<(const void*         value);
00053 
00054                 // aliases to solve ambiguity
00055                 OStream &operator<<(const int           value);
00056                 OStream &operator<<(const word          value);
00057 
00058                 virtual void flush() = 0;
00059                 virtual void write(const void* buffer, word length) = 0;
00060 
00061         protected:
00062                 // abstract implementation
00063                 virtual void write_int8   (const int8          value) = 0;
00064                 virtual void write_int16  (const int16         value) = 0;
00065                 virtual void write_int32  (const int32         value) = 0;
00066                 virtual void write_int64  (const int64         value) = 0;
00067 
00068                 virtual void write_word8  (const word8         value) = 0;
00069                 virtual void write_word16 (const word16        value) = 0;
00070                 virtual void write_word32 (const word32        value) = 0;
00071                 virtual void write_word64 (const word64        value) = 0;
00072 
00073                 virtual void write_float32(const float32       value) = 0;
00074                 virtual void write_float64(const float64       value) = 0;
00075 
00076                 virtual void write_bool   (const bool          value) = 0;
00077                 virtual void write_char   (const char          value) = 0;
00078                 virtual void write_string (const std::string&  value) = 0;
00079                 virtual void write_pointer(const void*         value) = 0;
00080         };
00081 
00082 } // namespace sword
00083 
00084 #include "sword.private/streams.OStream.inl"
00085 
00086 #endif // _SWORD_STREAMS_OSTREAM_

Generated on Tue Dec 23 20:08:56 2003 for SWORD by doxygen1.3-rc2