Main Page | Modules | Namespace List | Class Hierarchy | Alphabetical List | Class List | File List | Namespace Members | Class Members | File Members | Related Pages

atoms/stream.hh

Go to the documentation of this file.
00001 
00009 #ifndef ATOMS_STREAM_H
00010 #define ATOMS_STREAM_H
00011 
00012 #include <atoms/gen.hh>
00013 
00014 namespace atoms {
00015 
00022 class Stream : public virtual IOHandle {
00023 public:
00024     virtual ~Stream() {}
00025 
00029     virtual void close() = 0;
00030 
00037     virtual bool isOpen() const = 0;
00038 
00045     virtual bool isClosed() const = 0;
00046 
00051     virtual bool isReadable() const = 0;
00052 
00057     virtual bool isWritable() const = 0;
00058 
00063     virtual bool isSeekable() const = 0;
00064 
00082     virtual size_t read(void *buf, size_t count) = 0;
00083 
00098     virtual size_t write(const void *buf, size_t size) = 0;
00099 };
00100 
00105 class Seekable : public virtual IOHandle {
00106 public:
00108     enum Origin {
00109         oSet,       
00110         oCur,       
00111         oEnd        
00112     };
00113 
00124     virtual off_t seek(off_t offset, Origin origin = oSet) = 0;
00125 
00132     virtual bool isAppending() const = 0;
00133 
00135     off_t tell() { return seek(0, oCur); }
00136 };
00137 
00138 } // namespace atoms
00139 #endif 

Generated on Wed Jun 15 01:20:35 2005 for atoms++ by doxygen 1.3.5