OpenSceneGraph 3.6.5
StreamOperator
Go to the documentation of this file.
1#ifndef OSGDB_STREAMOPERATOR
2#define OSGDB_STREAMOPERATOR
3
4#include <iostream>
5#include <sstream>
6#include <osg/Referenced>
7#include <osgDB/Export>
8#include <osgDB/DataTypes>
9
10namespace osgDB
11{
12
13// forward declare
14class InputStream;
15class OutputStream;
16
18{
19public:
21 virtual ~OutputIterator() {}
22
23 void setStream( std::ostream* ostream ) { _out = ostream; }
24 std::ostream* getStream() { return _out; }
25 const std::ostream* getStream() const { return _out; }
26
27 void setOutputStream( OutputStream* outputStream) { _outputStream = outputStream; }
29 const OutputStream* getOutputStream() const { return _outputStream; }
30
33
34 virtual bool isBinary() const = 0;
35
36 virtual void writeBool( bool b ) = 0;
37 virtual void writeChar( char c ) = 0;
38 virtual void writeUChar( unsigned char c ) = 0;
39 virtual void writeShort( short s ) = 0;
40 virtual void writeUShort( unsigned short s ) = 0;
41 virtual void writeInt( int i ) = 0;
42 virtual void writeUInt( unsigned int i ) = 0;
43 virtual void writeLong( long l ) = 0;
44 virtual void writeULong( unsigned long l ) = 0;
45 virtual void writeInt64( GLint64 ll ) = 0;
46 virtual void writeUInt64( GLuint64 ull ) = 0;
47 virtual void writeFloat( float f ) = 0;
48 virtual void writeDouble( double d ) = 0;
49 virtual void writeString( const std::string& s ) = 0;
50 virtual void writeStream( std::ostream& (*fn)(std::ostream&) ) = 0;
51 virtual void writeBase( std::ios_base& (*fn)(std::ios_base&) ) = 0;
52
53 virtual void writeGLenum( const ObjectGLenum& value ) = 0;
54 virtual void writeProperty( const ObjectProperty& prop ) = 0;
55 virtual void writeMark( const ObjectMark& mark ) = 0;
56 virtual void writeCharArray( const char* s, unsigned int size ) = 0;
57 virtual void writeWrappedString( const std::string& str ) = 0;
58
59 virtual void flush() { _out->flush(); }
60
61protected:
62 // Return true if the manipulator is std::endl
63 bool isEndl( std::ostream& (*fn)(std::ostream&) )
64 {
65#if defined (__sun) || (defined _WIN32 && !defined OSG_LIBRARY_STATIC)
66 // What a mess, but solaris does not like taking the address below
67 // windows std::endl is a template with different adresses in different dll's
68 std::stringstream ss;
69 ss << fn;
70 std::string s = ss.str();
71 return !s.empty() && s[0] == '\n';
72#else
73 return fn==static_cast<std::ostream& (*)(std::ostream&)>(std::endl);
74#endif
75 }
76
77 std::ostream* _out;
80};
81
83{
84public:
86 virtual ~InputIterator() {}
87
88 void setStream( std::istream* istream ) { _in = istream; }
89 std::istream* getStream() { return _in; }
90 const std::istream* getStream() const { return _in; }
91
92 void setInputStream( InputStream* inputStream) { _inputStream = inputStream; }
94 const InputStream* getInputStream() const { return _inputStream; }
95
96 void setByteSwap(int byteSwap) { _byteSwap = byteSwap; }
97 int getByteSwap() const { return _byteSwap; }
98
101
102 void checkStream() const;
103 bool isFailed() const { return _failed; }
104
105 virtual bool isBinary() const = 0;
106
107 virtual void readBool( bool& b ) = 0;
108 virtual void readChar( char& c ) = 0;
109 virtual void readSChar( signed char& c ) = 0;
110 virtual void readUChar( unsigned char& c ) = 0;
111 virtual void readShort( short& s ) = 0;
112 virtual void readUShort( unsigned short& s ) = 0;
113 virtual void readInt( int& i ) = 0;
114 virtual void readUInt( unsigned int& i ) = 0;
115 virtual void readLong( long& l ) = 0;
116 virtual void readULong( unsigned long& l ) = 0;
117 virtual void readFloat( float& f ) = 0;
118 virtual void readDouble( double& d ) = 0;
119 virtual void readString( std::string& s ) = 0;
120 virtual void readStream( std::istream& (*fn)(std::istream&) ) = 0;
121 virtual void readBase( std::ios_base& (*fn)(std::ios_base&) ) = 0;
122
123 virtual void readGLenum( ObjectGLenum& value ) = 0;
124 virtual void readProperty( ObjectProperty& prop ) = 0;
125 virtual void readMark( ObjectMark& mark ) = 0;
126 virtual void readCharArray( char* s, unsigned int size ) = 0;
127 virtual void readWrappedString( std::string& str ) = 0;
128
129 virtual bool matchString( const std::string& /*str*/ ) { return false; }
131
132 void throwException( const std::string& msg );
133
134 void readComponentArray( char* s, unsigned int numElements, unsigned int numComponentsPerElements, unsigned int componentSizeInBytes);
135
136protected:
137 std::istream* _in;
141 mutable bool _failed;
142};
143
144}
145
146#endif
The osgDB library provides support for reading and writing scene graphs, providing a plugin framework...
Definition Archive:24
Base class for providing reference counted objects.
Definition Referenced:44
Definition DataTypes:94
Definition DataTypes:105
Definition DataTypes:129
Definition InputStream:64
Definition OutputStream:57
virtual void writeString(const std::string &s)=0
virtual bool isBinary() const =0
bool isEndl(std::ostream &(*fn)(std::ostream &))
Definition StreamOperator:63
OutputStream * getOutputStream()
Definition StreamOperator:28
virtual void writeInt64(GLint64 ll)=0
std::ostream * getStream()
Definition StreamOperator:24
virtual void writeWrappedString(const std::string &str)=0
virtual void writeGLenum(const ObjectGLenum &value)=0
virtual void writeUShort(unsigned short s)=0
OutputIterator()
Definition StreamOperator:20
osgDB::OutputStream * _outputStream
Definition StreamOperator:78
virtual ~OutputIterator()
Definition StreamOperator:21
virtual void writeChar(char c)=0
virtual void writeMark(const ObjectMark &mark)=0
virtual void writeUInt64(GLuint64 ull)=0
bool getSupportBinaryBrackets() const
Definition StreamOperator:32
virtual void flush()
Definition StreamOperator:59
virtual void writeDouble(double d)=0
void setOutputStream(OutputStream *outputStream)
Definition StreamOperator:27
virtual void writeBool(bool b)=0
virtual void writeLong(long l)=0
virtual void writeCharArray(const char *s, unsigned int size)=0
bool _supportBinaryBrackets
Definition StreamOperator:79
virtual void writeUInt(unsigned int i)=0
virtual void writeShort(short s)=0
virtual void writeBase(std::ios_base &(*fn)(std::ios_base &))=0
virtual void writeFloat(float f)=0
virtual void writeStream(std::ostream &(*fn)(std::ostream &))=0
void setSupportBinaryBrackets(bool b)
Definition StreamOperator:31
virtual void writeULong(unsigned long l)=0
virtual void writeUChar(unsigned char c)=0
virtual void writeInt(int i)=0
const OutputStream * getOutputStream() const
Definition StreamOperator:29
virtual void writeProperty(const ObjectProperty &prop)=0
const std::ostream * getStream() const
Definition StreamOperator:25
void setStream(std::ostream *ostream)
Definition StreamOperator:23
std::ostream * _out
Definition StreamOperator:77
bool _supportBinaryBrackets
Definition StreamOperator:140
bool isFailed() const
Definition StreamOperator:103
std::istream * getStream()
Definition StreamOperator:89
int getByteSwap() const
Definition StreamOperator:97
virtual void readProperty(ObjectProperty &prop)=0
virtual void readChar(char &c)=0
virtual void readGLenum(ObjectGLenum &value)=0
virtual void readULong(unsigned long &l)=0
void readComponentArray(char *s, unsigned int numElements, unsigned int numComponentsPerElements, unsigned int componentSizeInBytes)
virtual void readUChar(unsigned char &c)=0
void throwException(const std::string &msg)
bool getSupportBinaryBrackets() const
Definition StreamOperator:100
const std::istream * getStream() const
Definition StreamOperator:90
virtual void readFloat(float &f)=0
void setInputStream(InputStream *inputStream)
Definition StreamOperator:92
void setByteSwap(int byteSwap)
Definition StreamOperator:96
virtual void readShort(short &s)=0
std::istream * _in
Definition StreamOperator:137
int _byteSwap
Definition StreamOperator:139
virtual void readString(std::string &s)=0
virtual void readStream(std::istream &(*fn)(std::istream &))=0
virtual void readLong(long &l)=0
virtual void readUInt(unsigned int &i)=0
virtual void readWrappedString(std::string &str)=0
virtual void readInt(int &i)=0
void setStream(std::istream *istream)
Definition StreamOperator:88
osgDB::InputStream * _inputStream
Definition StreamOperator:138
virtual bool isBinary() const =0
InputStream * getInputStream()
Definition StreamOperator:93
void checkStream() const
virtual void readUShort(unsigned short &s)=0
InputIterator()
Definition StreamOperator:85
virtual void readSChar(signed char &c)=0
virtual void advanceToCurrentEndBracket()
Definition StreamOperator:130
virtual void readCharArray(char *s, unsigned int size)=0
bool _failed
Definition StreamOperator:141
void setSupportBinaryBrackets(bool b)
Definition StreamOperator:99
virtual ~InputIterator()
Definition StreamOperator:86
virtual void readBase(std::ios_base &(*fn)(std::ios_base &))=0
virtual void readMark(ObjectMark &mark)=0
virtual void readBool(bool &b)=0
const InputStream * getInputStream() const
Definition StreamOperator:94
virtual bool matchString(const std::string &)
Definition StreamOperator:129
virtual void readDouble(double &d)=0
#define OSGDB_EXPORT
Definition Export:39

osg logo
Generated at Sun Jul 20 2025 00:00:00 for the OpenSceneGraph by doxygen 1.14.0.