53 template <
class _StreamClass>
56 _StreamClass *streamp;
64 mcxxstream(_StreamClass *streamptr=NULL) : streamp(streamptr) {};
67 mcxxstream(_StreamClass &stream) : streamp(&stream) {};
79 virtual bool valid(
void) {
return streamp && streamp->good(); };
82 virtual bool eof(
void) {
return !streamp || streamp->
eof(); };
122 virtual ByteCount read(
char *buf,
size_t n) {
123 return streamp ? streamp->
read(buf,n).gcount() : 0;
127 virtual int getbyte(
void) {
128 return streamp ? streamp->get() : EOF;
143 char *_printf_buffer;
155 _printf_buffer(NULL),
162 _printf_buffer(NULL),
169 if (_printf_buffer) free(_printf_buffer);
179 virtual bool mflush(
void) {
return streamp->flush().good(); };
182 virtual bool write(
const char *buf,
size_t n) {
183 return streamp ? streamp->write(buf,n).good() :
false;
187 virtual bool putbyte(
unsigned char c) {
188 return streamp ? streamp->put(c).good() :
false;
192 virtual bool puts(
const char *s) {
193 return streamp ? ((*streamp) << s).good() :
false;
196 virtual bool puts(
const std::string &s) {
197 return streamp ? ((*streamp) << s).good() :
false;
202 virtual bool vprintf(
const char *fmt, va_list &ap) {
203 if (!streamp)
return false;
205 moot_va_copy(ap_tmp,ap);
206 ByteCount nchars = vsnprintf(_printf_buffer, _printf_buflen, fmt, ap);
207 if (nchars >= _printf_buflen) {
209 _printf_buffer =
reinterpret_cast<char *
>(realloc(_printf_buffer, nchars+1));
210 assert(_printf_buffer != NULL);
211 _printf_buflen = nchars+1;
213 moot_va_copy(ap,ap_tmp);
214 nchars = vsnprintf(_printf_buffer, _printf_buflen, fmt, ap);
217 return streamp->write(_printf_buffer, nchars).good();
225 #endif //_MOOT_CXXIO_H
Definition: mootCxxIO.h:51
Abstract base class for output stream wrappers.
Definition: mootIO.h:194
Definition: mootCxxIO.h:141
Abstract base class for I/O stream wrappers.
Definition: mootIO.h:80
Namespace for I/O stream wrappers.
Definition: mootBufferIO.h:45
utilities for functions taking variable number of arguments
generic I/O abstraction layer
virtual ByteCount read(char *buf, size_t n)
Definition: mootCxxIO.h:123
int ByteCount
typedef for byte counts (should be signed, for compatibility)
Definition: mootIO.h:52
Definition: mootCxxIO.h:90
Abstract base class for input stream wrappers.
Definition: mootIO.h:129
virtual bool eof(void)
Definition: mootCxxIO.h:81