1 #ifndef OSGDB_STREAMOPERATOR
2 #define OSGDB_STREAMOPERATOR
6 #include <osg/Referenced>
7 #include <osgDB/Export>
8 #include <osgDB/DataTypes>
22 void setStream( std::ostream* ostream ) { _out = ostream; }
24 const std::ostream*
getStream()
const {
return _out; }
29 virtual bool isBinary()
const = 0;
31 virtual void writeBool(
bool b ) = 0;
32 virtual void writeChar(
char c ) = 0;
33 virtual void writeUChar(
unsigned char c ) = 0;
34 virtual void writeShort(
short s ) = 0;
35 virtual void writeUShort(
unsigned short s ) = 0;
36 virtual void writeInt(
int i ) = 0;
37 virtual void writeUInt(
unsigned int i ) = 0;
38 virtual void writeLong(
long l ) = 0;
39 virtual void writeULong(
unsigned long l ) = 0;
40 virtual void writeFloat(
float f ) = 0;
41 virtual void writeDouble(
double d ) = 0;
42 virtual void writeString(
const std::string& s ) = 0;
43 virtual void writeStream( std::ostream& (*fn)(std::ostream&) ) = 0;
44 virtual void writeBase( std::ios_base& (*fn)(std::ios_base&) ) = 0;
46 virtual void writeGLenum(
const ObjectGLenum& value ) = 0;
48 virtual void writeMark(
const ObjectMark& mark ) = 0;
49 virtual void writeCharArray(
const char* s,
unsigned int size ) = 0;
50 virtual void writeWrappedString(
const std::string& str ) = 0;
52 virtual void flush() { _out->flush(); }
56 bool isEndl( std::ostream& (*fn)(std::ostream&) )
62 std::string s = ss.str();
63 return !s.empty() && s[0] ==
'\n';
65 return fn==
static_cast<std::ostream& (*)(std::ostream&)
>(std::endl);
76 InputIterator() : _in(0), _inputStream(0), _byteSwap(0), _supportBinaryBrackets(false), _failed(false) {}
79 void setStream( std::istream* istream ) { _in = istream; }
81 const std::istream*
getStream()
const {
return _in; }
93 void checkStream()
const {
if (_in->rdstate()&_in->failbit) _failed =
true; }
96 virtual bool isBinary()
const = 0;
98 virtual void readBool(
bool& b ) = 0;
99 virtual void readChar(
char& c ) = 0;
100 virtual void readSChar(
signed char& c ) = 0;
101 virtual void readUChar(
unsigned char& c ) = 0;
102 virtual void readShort(
short& s ) = 0;
103 virtual void readUShort(
unsigned short& s ) = 0;
104 virtual void readInt(
int& i ) = 0;
105 virtual void readUInt(
unsigned int& i ) = 0;
106 virtual void readLong(
long& l ) = 0;
107 virtual void readULong(
unsigned long& l ) = 0;
108 virtual void readFloat(
float& f ) = 0;
109 virtual void readDouble(
double& d ) = 0;
110 virtual void readString( std::string& s ) = 0;
111 virtual void readStream( std::istream& (*fn)(std::istream&) ) = 0;
112 virtual void readBase( std::ios_base& (*fn)(std::ios_base&) ) = 0;
116 virtual void readMark(
ObjectMark& mark ) = 0;
117 virtual void readCharArray(
char* s,
unsigned int size ) = 0;
118 virtual void readWrappedString( std::string& str ) = 0;
123 void throwException(
const std::string& msg );
125 void readComponentArray(
char* s,
unsigned int numElements,
unsigned int numComponentsPerElements,
unsigned int componentSizeInBytes);
bool isEndl(std::ostream &(*fn)(std::ostream &))
const std::ostream * getStream() const
void setSupportBinaryBrackets(bool b)
bool _supportBinaryBrackets
std::ostream * getStream()
void setStream(std::ostream *ostream)
virtual ~OutputIterator()
bool getSupportBinaryBrackets() const