string.hpp
Go to the documentation of this file.
00001 
00008 /*****************************************************************************
00009 ** Ifdefs
00010 *****************************************************************************/
00011 
00012 #ifndef ECL_DEVICES_STRING_HPP_
00013 #define ECL_DEVICES_STRING_HPP_
00014 
00015 /*****************************************************************************
00016 ** Includes
00017 *****************************************************************************/
00018 
00019 #include <string>
00020 #include "traits.hpp"
00021 
00022 /*****************************************************************************
00023 ** Namespaces
00024 *****************************************************************************/
00025 
00026 namespace ecl {
00027 
00028 /*****************************************************************************
00029 ** Interface [String]
00030 *****************************************************************************/
00048 class String {
00049 public:
00058         explicit String(const char* str = "");
00064         virtual ~String();
00065 
00066         /*********************
00067         ** String Interface
00068         **********************/
00077         const char* c_str();
00086         std::string str();
00093         void clear();
00094 
00095         /******************************************
00096         ** Device Source Interface
00097         *******************************************/
00106         long read(char &c);
00115         long read(char* s, unsigned long n);
00124         unsigned long remaining();
00125 
00126         /******************************************
00127         ** Device Sink Interface
00128         *******************************************/
00138         long write(char c);
00150         long write(const char* s, unsigned long n);
00151 
00152         /******************************************
00153         ** Device Seekable Interface
00154         *******************************************/
00164         unsigned long size();
00171         void flush() {};
00172 
00173         /*********************
00174         ** Device Interface
00175         **********************/
00184         bool open() { return true; }; 
00193         bool isOpen() { return true; }; 
00195 private:
00196         unsigned long buffer_length; // Actual reserved memory is this +1
00197         char *buffer;
00198         char* buffer_cur_write;
00199         char* buffer_cur_read;
00209         void grow(int no_bytes = 256);
00210 
00211 };
00212 
00213 /*****************************************************************************
00214 ** Traits
00215 *****************************************************************************/
00216 
00222 template <>
00223 class is_sink<String> : public True {};
00224 
00230 template <>
00231 class is_source<String> : public True {};
00232 
00238 template <>
00239 class is_sourcesink<String> : public True {};
00240 
00241 } // namespace ecl
00242 
00243 
00244 #endif /* ECL_DEVICES_STRING_HPP_ */


ecl_devices
Author(s): Daniel Stonier (d.stonier@gmail.com)
autogenerated on Thu Jan 2 2014 11:12:50