InputStreamer.hh

00001 
00019 #ifndef avro_InputStreamer_hh__
00020 #define avro_InputStreamer_hh__
00021 
00022 #include <iostream>
00023 #include <stdint.h>
00024 
00025 namespace avro {
00026 
00035     
00036 class InputStreamer {
00037 
00038   public:
00039 
00040     virtual ~InputStreamer()
00041     { }
00042 
00043     virtual size_t readByte(uint8_t &byte) = 0;
00044     virtual size_t readWord(uint32_t &word) = 0;
00045     virtual size_t readLongWord(uint64_t &word) = 0;
00046     virtual size_t readBytes(void *bytes, size_t size) = 0;
00047 };
00048 
00049 
00056     
00057 class IStreamer : public InputStreamer {
00058 
00059   public:
00060 
00061     IStreamer(std::istream &is) :
00062         is_(is)
00063     {}
00064 
00065     size_t readByte(uint8_t &byte) {
00066         char val;
00067         is_.get(val);
00068         byte = val;
00069         return 1;
00070     }
00071 
00072     size_t readWord(uint32_t &word) {
00073         is_.read(reinterpret_cast<char *>(&word), sizeof(word));
00074         return is_.gcount();
00075     }
00076 
00077     size_t readLongWord(uint64_t &word) {
00078         is_.read(reinterpret_cast<char *>(&word), sizeof(word));
00079         return is_.gcount();
00080     }
00081 
00082     size_t readBytes(void *bytes, size_t size) {
00083         is_.read(reinterpret_cast<char *>(bytes), size);
00084         return is_.gcount();
00085     }
00086 
00087   private:
00088 
00089     std::istream &is_;
00090 };
00091 
00092 } // namespace avro
00093 
00094 #endif

Generated on Thu Mar 25 14:58:22 2010 for Avro C++ by  doxygen 1.6.1