16 #ifndef __UT_IStream__
17 #define __UT_IStream__
68 { init(fp,
binary, bufferable); }
71 { init(is,
binary, bufferable); }
73 { init(buffer, bufsize, binary); }
81 bool bufferable=
true);
83 bool bufferable=
true);
90 virtual int64 getMemoryUsage(
bool inclusive)
const;
94 const char* getFilename()
const;
108 static void setStdinCompatible(
bool state);
120 {
return myStream->tellg(); }
121 bool seekg(
exint pos,
int seekdir=UT_SEEK_BEG);
134 FileSystemType getFileSystemType()
const;
138 int getFileDescriptor()
const;
146 void setError(
bool is_error) { myError = is_error; }
175 void pushOperation(
const char *operation);
204 bool skipLine(
int end=
'\n');
207 bool skipWhitespace(
int64 &line_count,
int64 &line_start_pos);
208 bool skipWhitespace();
236 bool strip_inline_comments =
true);
243 if (!getNonCommentWord(wbuf, comment))
245 return !strcmp(wbuf.
buffer(), expected);
254 if (myStream->checkToken(expected))
265 {
return myStream->getc(); }
267 {
return myStream->peekc(); }
275 {
return myStream->unwind(amount); }
286 return myBinary ? bread(array, sz) : aread(array, sz);
290 return myBinary ? bread(array, sz) : aread(array, sz);
294 return myBinary ? bread(array, sz) : aread(array, sz);
298 return myBinary ? bread(array, sz) : aread(array, sz);
302 return myBinary ? bread(array, sz) : aread(array, sz);
306 return myBinary ? bread(array, sz) : aread(array, sz);
310 return myBinary ? bread(array, sz) : aread(array, sz);
314 return myBinary ? bread(
string) : aread(
string);
318 return myBinary ? bread(bytes) : aread(bytes);
322 return readStringHolder(
string, myBinary);
327 template <
typename SOURCE_TYPE,
typename T>
330 exint n = (max_elem <= sz) ? max_elem : sz;
335 for (i = max_elem; i < sz; i++)
337 if (!read<SOURCE_TYPE>(&dummy))
344 exint n = (max_elem <= sz) ? max_elem : sz;
349 for (i = max_elem; i < sz; i++)
373 char *readBinaryData(
378 return (
read(&result) == 1);
383 return bread(&result) == 1;
384 return areadChar(result);
388 if (!skipWhitespace())
390 return bread(&result, 1) == 1;
397 {
return myBinary ? bread<SOURCE_TYPE>(
val, sz) : aread(val, sz); }
399 {
return myBinary ? bread<SOURCE_TYPE>(
val, sz) : aread(val, sz); }
401 {
return myBinary ? bread<SOURCE_TYPE>(
val, sz) : aread(val, sz); }
403 {
return myBinary ? bread<SOURCE_TYPE>(
val, sz) : aread(val, sz); }
405 {
return myBinary ? bread<SOURCE_TYPE>(
val, sz) : aread(val, sz); }
419 return bread(reinterpret_cast<char *>(buffer),
size);
423 {
return bread((
char *)buffer, asize); }
425 {
return bread((
char *)buffer, asize); }
428 {
return bread((
int16 *)buffer, asize); }
431 {
return bread((
int32 *)buffer, asize); }
434 {
return bread((
int64 *)buffer, asize); }
437 {
return readStdString(bytes,
true); }
439 {
return readStringHolder(bytes,
true); }
467 {
return readStdString(bytes,
false); }
469 {
return readStringHolder(bytes,
false); }
554 bool bufferable=
true);
559 bool bufferable=
true);
601 myIs.pushBinary(binary);
627 myOperation(operation, harden)
629 myIs.pushOperation(myOperation);
UT_IStream(FILE *fp, UT_ISTREAM_READTYPE binary=UT_ISTREAM_BINARY, bool bufferable=true)
bool checkNonCommentToken(const char *expected, int comment='#')
UT_ASSERT_COMPILETIME(BRAY_EVENT_MAXFLAGS<=32)
GT_API const UT_StringHolder filename
SYS_FORCE_INLINE exint unwind(exint amount)
UT_IStreamBuf * getStreamBuffer()
exint read(uint64 *array, exint sz=1)
UT_IStream(std::istream &is, UT_ISTREAM_READTYPE binary=UT_ISTREAM_BINARY, bool bufferable=true)
exint read(T *array, exint sz, exint max_elem)
exint read(int16 *array, exint sz=1)
bool readBool(bool &result)
GLuint const GLfloat * val
UT_IStream(const UT_WorkBuffer &buffer, UT_ISTREAM_READTYPE binary=UT_ISTREAM_ASCII)
void setIsFile(bool isFile)
bool checkToken(const char *expected)
bool aread(UT_String &str)
SYS_FORCE_INLINE const char * buffer() const
bool read(std::string &bytes)
bool read(UT_String &string)
unsigned long long uint64
void read(T &in, bool &v)
exint bread(signed char *buffer, exint asize=1)
exint read(int64 *val, exint sz=1)
exint bread(bool *buffer, exint size=1)
std::unique_ptr< T, Deleter > UT_UniquePtr
A smart pointer for unique ownership of dynamically allocated objects.
exint bread(uint64 *buffer, exint asize=1)
exint bread(uint16 *buffer, exint asize=1)
exint bread(uint32 *buffer, exint asize=1)
UT_SmallArray< int, sizeof(int)*4 > myBinaryStack
void setVersion(int version)
exint read(fpreal32 *val, exint sz=1)
bool bread(std::string &bytes)
SYS_FORCE_INLINE exint ungetc()
exint read(fpreal16 *val, exint sz=1)
const GLuint GLenum const void * binary
exint read(bool *array, exint sz=1)
UT_IStream(const char *buffer, size_t bufsize, UT_ISTREAM_READTYPE binary)
const UT_StringHolder & getLabel() const
UT_IStreamAutoOp(UT_IStream &is, const char *operation, bool harden=false)
exint read(uint32 *array, exint sz=1)
GLuint GLsizei GLsizei GLchar * label
GT_API const UT_StringHolder version
void setError(bool is_error)
UT_IStreamAutoBinary(UT_IStream &is, UT_ISTREAM_READTYPE binary)
GLsizei const GLchar *const * string
bool bread(UT_String &str)
A map of string to various well defined value types.
bool areadChar(char &result)
bool aread(UT_StringHolder &bytes)
void setIsSubStream(bool is_sub_stream)
exint read(int64 *array, exint sz=1)
SYS_FORCE_INLINE int getc()
bool aread(std::string &bytes)
Name readString(std::istream &is)
exint read(int32 *array, exint sz=1)
SYS_FORCE_INLINE int peek()
exint read(int32 *val, exint sz=1)
bool read(UT_StringHolder &string)
void setLabel(const UT_StringHolder &label)
bool readChar(char &result)
exint bread(unsigned char *buffer, exint asize=1)
exint read(uint16 *array, exint sz=1)
exint read(bool *array, exint sz, exint max_elem)
bool skipLine(int end='\n')
UT_IStreamAutoBinary(UT_IStream &is, bool binary)
bool skipLine(int end='\n')
bool bread(UT_StringHolder &bytes)
UT_Array< const char * > myOperationStack
exint read(fpreal64 *val, exint sz=1)