diff options
Diffstat (limited to '')
| -rw-r--r-- | src/membuf.h | 7 | ||||
| -rw-r--r-- | src/stream.cpp | 16 | ||||
| -rw-r--r-- | src/stream.h | 10 |
3 files changed, 32 insertions, 1 deletions
diff --git a/src/membuf.h b/src/membuf.h index d98a29c..544dc83 100644 --- a/src/membuf.h +++ b/src/membuf.h | |||
| @@ -17,7 +17,12 @@ | |||
| 17 | namespace Bu | 17 | namespace Bu |
| 18 | { | 18 | { |
| 19 | /** | 19 | /** |
| 20 | * A memory buffer stream. | 20 | * A memory buffer stream. This provides a read/write stream in memory that |
| 21 | * works exactly like a file stream...only in memory. You can seed the | ||
| 22 | * memory buffer with a Bu::String of your own, or start with an empty one. | ||
| 23 | * Due to Bu::String using Bu::SharedCore starting with a string will not | ||
| 24 | * necesarilly cause the MemBuf to make a copy of your memory, but if you're | ||
| 25 | * sure you're not going to need to change the stream then use StaticMemBuf. | ||
| 21 | *@ingroup Streams | 26 | *@ingroup Streams |
| 22 | */ | 27 | */ |
| 23 | class MemBuf : public Stream | 28 | class MemBuf : public Stream |
diff --git a/src/stream.cpp b/src/stream.cpp index 028166e..58641cc 100644 --- a/src/stream.cpp +++ b/src/stream.cpp | |||
| @@ -30,6 +30,22 @@ Bu::String Bu::Stream::readLine() | |||
| 30 | } | 30 | } |
| 31 | } | 31 | } |
| 32 | 32 | ||
| 33 | Bu::String Bu::Stream::readAll() | ||
| 34 | { | ||
| 35 | Bu::String sRet; | ||
| 36 | char buf[4096]; | ||
| 37 | |||
| 38 | while( !isEos() ) | ||
| 39 | { | ||
| 40 | int iRead = read( buf, 4096 ); | ||
| 41 | if( iRead == 0 ) | ||
| 42 | return sRet; | ||
| 43 | sRet.append( buf, iRead ); | ||
| 44 | } | ||
| 45 | |||
| 46 | return sRet; | ||
| 47 | } | ||
| 48 | |||
| 33 | Bu::size Bu::Stream::write( const Bu::String &sBuf ) | 49 | Bu::size Bu::Stream::write( const Bu::String &sBuf ) |
| 34 | { | 50 | { |
| 35 | return write( sBuf.getStr(), sBuf.getSize() ); | 51 | return write( sBuf.getStr(), sBuf.getSize() ); |
diff --git a/src/stream.h b/src/stream.h index fb70f21..b35f6ee 100644 --- a/src/stream.h +++ b/src/stream.h | |||
| @@ -56,6 +56,16 @@ namespace Bu | |||
| 56 | virtual Bu::String readLine(); | 56 | virtual Bu::String readLine(); |
| 57 | 57 | ||
| 58 | /** | 58 | /** |
| 59 | * Reads all data from the current position onward until isEos returns | ||
| 60 | * true and returns it as a Bu::String. This will also return if no | ||
| 61 | * data is available and the stream is in non-blocking mode. This | ||
| 62 | * function is intended for very particular circumstances and is often | ||
| 63 | * not the most efficient way to access the data that you would like. | ||
| 64 | *@returns The entire stream contents. | ||
| 65 | */ | ||
| 66 | virtual Bu::String readAll(); | ||
| 67 | |||
| 68 | /** | ||
| 59 | * Write data to the stream. | 69 | * Write data to the stream. |
| 60 | *@param pBuf (const void *) The data to be written. | 70 | *@param pBuf (const void *) The data to be written. |
| 61 | *@param nBytes (size_t) Amount of data to write from pBuf. | 71 | *@param nBytes (size_t) Amount of data to write from pBuf. |
