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

streams.IStream.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_ISTREAM_
00020 #define _SWORD_STREAMS_ISTREAM_
00021 
00022 namespace sword {
00023 
00025 
00029         class SWORDDECL IStream {
00030         public:
00031                 IStream()  {}
00032                 virtual ~IStream() {}
00033 
00034                 // output to media
00035                 IStream &operator>>(int8        &value);
00036                 IStream &operator>>(int16       &value);
00037                 IStream &operator>>(int32       &value);
00038                 IStream &operator>>(int64       &value);
00039 
00040                 IStream &operator>>(word8       &value);
00041                 IStream &operator>>(word16      &value);
00042                 IStream &operator>>(word32      &value);
00043                 IStream &operator>>(word64      &value);
00044 
00045                 IStream &operator>>(float32     &value);
00046                 IStream &operator>>(float64     &value);
00047 
00048                 IStream &operator>>(bool        &value);
00049                 IStream &operator>>(char        &value);
00050                 IStream &operator>>(std::string &value);
00051                 IStream &operator>>(void*       &value);
00052 
00053                 // aliases to solve ambiguity
00054                 IStream &operator>>(int         &value);
00055                 IStream &operator>>(word        &value);
00056 
00057                 virtual word read(void* buffer, word length) = 0;
00058 
00059         protected:
00060                 // abstract implementation
00061                 virtual void read_int8   (int8        &value) = 0;
00062                 virtual void read_int16  (int16       &value) = 0;
00063                 virtual void read_int32  (int32       &value) = 0;
00064                 virtual void read_int64  (int64       &value) = 0;
00065 
00066                 virtual void read_word8  (word8       &value) = 0;
00067                 virtual void read_word16 (word16      &value) = 0;
00068                 virtual void read_word32 (word32      &value) = 0;
00069                 virtual void read_word64 (word64      &value) = 0;
00070 
00071                 virtual void read_float32(float32     &value) = 0;
00072                 virtual void read_float64(float64     &value) = 0;
00073 
00074                 virtual void read_bool   (bool        &value) = 0;
00075                 virtual void read_char   (char        &value) = 0;
00076                 virtual void read_string (std::string &value) = 0;
00077                 virtual void read_pointer(void*       &value) = 0;
00078         };
00079 
00080 } // namespace sword
00081 
00082 #include "sword.private/streams.IStream.inl"
00083 
00084 #endif // _SWORD_STREAMS_ISTREAM_

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