summaryrefslogtreecommitdiff
path: root/src/stream.h
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--src/stream.h42
1 files changed, 33 insertions, 9 deletions
diff --git a/src/stream.h b/src/stream.h
index 0ea5560..e7db7af 100644
--- a/src/stream.h
+++ b/src/stream.h
@@ -8,6 +8,8 @@
8#ifndef BU_STREAM_H 8#ifndef BU_STREAM_H
9#define BU_STREAM_H 9#define BU_STREAM_H
10 10
11#include "bu/config.h"
12
11#include <stdint.h> 13#include <stdint.h>
12#include <stdio.h> 14#include <stdio.h>
13 15
@@ -43,7 +45,7 @@ namespace Bu
43 *@param nBytes (size_t) Max data to read. 45 *@param nBytes (size_t) Max data to read.
44 *@returns (size_t) Amount of data read. 46 *@returns (size_t) Amount of data read.
45 */ 47 */
46 virtual size_t read( void *pBuf, size_t nBytes ) = 0; 48 virtual size read( void *pBuf, size iBytes ) = 0;
47 49
48 /** 50 /**
49 * Attempts to read a complete line from the stream. This will stop 51 * Attempts to read a complete line from the stream. This will stop
@@ -59,33 +61,33 @@ namespace Bu
59 *@param nBytes (size_t) Amount of data to write from pBuf. 61 *@param nBytes (size_t) Amount of data to write from pBuf.
60 *@returns (size_t) Amount of data actually written. 62 *@returns (size_t) Amount of data actually written.
61 */ 63 */
62 virtual size_t write( const void *pBuf, size_t nBytes ) = 0; 64 virtual size write( const void *pBuf, size iBytes ) = 0;
63 65
64 virtual size_t write( const Bu::FString &sBuf ); 66 virtual size write( const Bu::FString &sBuf );
65 67
66 /** 68 /**
67 * Get the current position in the stream. 69 * Get the current position in the stream.
68 *@returns (long) The current position in the stream. 70 *@returns (long) The current position in the stream.
69 */ 71 */
70 virtual long tell() = 0; 72 virtual size tell() = 0;
71 73
72 /** 74 /**
73 * Seek to a position in the stream relative to the current position. 75 * Seek to a position in the stream relative to the current position.
74 *@param offset (long) Offset from current position to seek to. 76 *@param offset (long) Offset from current position to seek to.
75 */ 77 */
76 virtual void seek( long offset ) = 0; 78 virtual void seek( size offset ) = 0;
77 79
78 /** 80 /**
79 * Set position in the stream relative to the start of the stream. 81 * Set position in the stream relative to the start of the stream.
80 *@param pos (long) The position. 82 *@param pos (long) The position.
81 */ 83 */
82 virtual void setPos( long pos ) = 0; 84 virtual void setPos( size pos ) = 0;
83 85
84 /** 86 /**
85 * Set position in the stream relative to the end of the stream. 87 * Set position in the stream relative to the end of the stream.
86 *@param pos (long) The position. 88 *@param pos (long) The position.
87 */ 89 */
88 virtual void setPosEnd( long pos ) = 0; 90 virtual void setPosEnd( size pos ) = 0;
89 91
90 /** 92 /**
91 * Are we at the end of the stream? 93 * Are we at the end of the stream?
@@ -158,10 +160,32 @@ namespace Bu
158 * removed from the end of the stream, but the content of the added 160 * removed from the end of the stream, but the content of the added
159 * data is undefined. 161 * data is undefined.
160 */ 162 */
161 virtual void setSize( long iSize ) = 0; 163 virtual void setSize( size iSize ) = 0;
164
165 /**
166 * Returns the size of the stream if the stream can have a size. For
167 * streams that do not (sockets, pipes, etc.) this should throw an
168 * unsupported exception.
169 */
170 virtual size getSize() const = 0;
162 171
163 public: // Filters 172 /**
173 * Returns the block-size of the stream, if it has one. This should
174 * throw an unsupported exception. In some cases the block size
175 * returned will not represent quite the same thing, for example,
176 * sockets will return their MTU, while files will return the
177 * filesystem's block size, and memory buffers will throw an exception.
178 */
179 virtual size getBlockSize() const = 0;
164 180
181 /**
182 * If possible, this returns a string that can be used to describe how
183 * to access the open stream. Not all streams support this, such as
184 * MemBuf, but for files it may give you a path to a file, for a socket
185 * it may give you an ip address, etc. If it isn't supported, an empty
186 * string may be returned.
187 */
188 virtual Bu::FString getLocation() const = 0;
165 189
166 private: 190 private:
167 191