16 #ifndef __UT_IStream__
17 #define __UT_IStream__
68 { init(fp,
binary, bufferable); }
71 { init(is,
binary, bufferable); }
73 { init(buffer, bufsize, binary); }
83 bool bufferable=
true);
85 bool bufferable=
true);
94 virtual int64 getMemoryUsage(
bool inclusive)
const;
98 const char* getFilename()
const;
112 static void setStdinCompatible(
bool state);
124 {
return myStream->tellg(); }
125 bool seekg(
exint pos,
int seekdir=UT_SEEK_BEG);
138 FileSystemType getFileSystemType()
const;
142 int getFileDescriptor()
const;
150 void setError(
bool is_error) { myError = is_error; }
179 void pushOperation(
const char *operation);
208 bool skipLine(
int end=
'\n');
211 bool skipWhitespace(
int64 &line_count,
int64 &line_start_pos);
212 bool skipWhitespace();
240 bool strip_inline_comments =
true);
247 if (!getNonCommentWord(wbuf, comment))
249 return !strcmp(wbuf.
buffer(), expected);
258 if (myStream->checkToken(expected))
269 {
return myStream->getc(); }
271 {
return myStream->peekc(); }
279 {
return myStream->unwind(amount); }
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(array, sz) : aread(array, sz);
318 return myBinary ? bread(
string) : aread(
string);
322 return myBinary ? bread(bytes) : aread(bytes);
326 return readStringHolder(
string, myBinary);
331 template <
typename SOURCE_TYPE,
typename T>
334 exint n = (max_elem <= sz) ? max_elem : sz;
339 for (i = max_elem; i < sz; i++)
341 if (!read<SOURCE_TYPE>(&dummy))
348 exint n = (max_elem <= sz) ? max_elem : sz;
353 for (i = max_elem; i < sz; i++)
386 char *readBinaryData(
392 return (
read(&result) == 1);
397 return bread(&result) == 1;
398 return areadChar(result);
402 if (!skipWhitespace())
404 return bread(&result, 1) == 1;
411 {
return myBinary ? bread<SOURCE_TYPE>(
val, sz) : aread(val, sz); }
413 {
return myBinary ? bread<SOURCE_TYPE>(
val, sz) : aread(val, sz); }
415 {
return myBinary ? bread<SOURCE_TYPE>(
val, sz) : aread(val, sz); }
417 {
return myBinary ? bread<SOURCE_TYPE>(
val, sz) : aread(val, sz); }
419 {
return myBinary ? bread<SOURCE_TYPE>(
val, sz) : aread(val, sz); }
433 return bread(reinterpret_cast<char *>(buffer),
size);
437 {
return bread((
char *)buffer, asize); }
439 {
return bread((
char *)buffer, asize); }
442 {
return bread((
int16 *)buffer, asize); }
445 {
return bread((
int32 *)buffer, asize); }
448 {
return bread((
int64 *)buffer, asize); }
451 {
return readStdString(bytes,
true); }
453 {
return readStringHolder(bytes,
true); }
455 {
return readWorkBuffer(bytes,
true); }
483 {
return readStdString(bytes,
false); }
485 {
return readStringHolder(bytes,
false); }
487 {
return readWorkBuffer(bytes,
false); }
573 bool bufferable=
true);
578 bool bufferable=
true);
620 myIs.pushBinary(binary);
646 myOperation(operation, harden)
648 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
GLenum GLuint GLsizei bufsize
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)
const GLuint GLenum const void * binary
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)
exint read(bool *array, exint sz=1)
UT_IStream(const char *buffer, size_t bufsize, UT_ISTREAM_READTYPE binary)
GLsizei const GLchar *const * string
bool aread(UT_WorkBuffer &bytes)
bool bread(UT_WorkBuffer &bytes)
GLuint GLsizei const GLchar * label
const UT_StringHolder & getLabel() const
UT_IStreamAutoOp(UT_IStream &is, const char *operation, bool harden=false)
exint read(uint32 *array, exint sz=1)
GT_API const UT_StringHolder version
void setError(bool is_error)
UT_IStreamAutoBinary(UT_IStream &is, UT_ISTREAM_READTYPE binary)
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)