Added OutputStream::writeSize and InputStream::readSize methods to help out with ensure that 32bit and 64bit builds all
use the same 32bit type for sizes.
This commit is contained in:
@@ -126,7 +126,10 @@ public:
|
||||
void advanceToCurrentEndBracket();
|
||||
void readWrappedString( std::string& str );
|
||||
void readCharArray( char* s, unsigned int size ) { _in->readCharArray(s, size); }
|
||||
|
||||
|
||||
// readSize() use unsigned int for all sizes.
|
||||
unsigned int readSize() { unsigned int size; *this>>size; return size; }
|
||||
|
||||
// Global reading functions
|
||||
osg::Array* readArray();
|
||||
osg::PrimitiveSet* readPrimitiveSet();
|
||||
@@ -149,7 +152,7 @@ protected:
|
||||
void setWrapperSchema( const std::string& name, const std::string& properties );
|
||||
|
||||
template<typename T>
|
||||
void readArrayImplementation( T* a, int readSize, bool useByteSwap=false );
|
||||
void readArrayImplementation( T* a, int read_size, bool useByteSwap=false );
|
||||
|
||||
ArrayMap _arrayMap;
|
||||
IdentifierMap _identifierMap;
|
||||
|
||||
@@ -134,7 +134,11 @@ public:
|
||||
// Convenient methods for writing
|
||||
void writeWrappedString( const std::string& str );
|
||||
void writeCharArray( const char* s, unsigned int size ) { _out->writeCharArray(s, size); }
|
||||
|
||||
|
||||
// method for converting all data structure sizes to unsigned int to ensure architecture portability.
|
||||
template<typename T>
|
||||
void writeSize(T size) { *this<<static_cast<unsigned int>(size); }
|
||||
|
||||
// Global writing functions
|
||||
void writeArray( const osg::Array* a );
|
||||
void writePrimitiveSet( const osg::PrimitiveSet* p );
|
||||
@@ -153,7 +157,7 @@ public:
|
||||
|
||||
protected:
|
||||
template<typename T>
|
||||
void writeArrayImplementation( const T*, int writeSize, unsigned int numInRow=1 );
|
||||
void writeArrayImplementation( const T*, int write_size, unsigned int numInRow=1 );
|
||||
|
||||
unsigned int findOrCreateArrayID( const osg::Array* array );
|
||||
unsigned int findOrCreateObjectID( const osg::Object* obj );
|
||||
|
||||
@@ -763,7 +763,7 @@ void InputStream::resetSchema()
|
||||
}
|
||||
|
||||
template<typename T>
|
||||
void InputStream::readArrayImplementation( T* a, int readSize, bool useByteSwap )
|
||||
void InputStream::readArrayImplementation( T* a, int read_size, bool useByteSwap )
|
||||
{
|
||||
int size = 0;
|
||||
*this >> size >> BEGIN_BRACKET;
|
||||
@@ -772,11 +772,11 @@ void InputStream::readArrayImplementation( T* a, int readSize, bool useByteSwap
|
||||
a->resize( size );
|
||||
if ( isBinary() )
|
||||
{
|
||||
_in->getStream()->read( (char*)&((*a)[0]), readSize*size ); checkStream();
|
||||
_in->getStream()->read( (char*)&((*a)[0]), read_size*size ); checkStream();
|
||||
if ( useByteSwap && _byteSwap )
|
||||
{
|
||||
for ( int i=0; i<size; ++i )
|
||||
osg::swapBytes( (char*)&((*a)[i]), readSize );
|
||||
osg::swapBytes( (char*)&((*a)[i]), read_size );
|
||||
}
|
||||
}
|
||||
else
|
||||
|
||||
@@ -362,7 +362,7 @@ void OutputStream::writeImage( const osg::Image* img )
|
||||
|
||||
// _mipmapData
|
||||
const osg::Image::MipmapDataType& levels = img->getMipmapLevels();
|
||||
*this << levels.size();
|
||||
writeSize(levels.size());
|
||||
for ( osg::Image::MipmapDataType::const_iterator itr=levels.begin();
|
||||
itr!=levels.end(); ++itr )
|
||||
{
|
||||
@@ -552,12 +552,12 @@ void OutputStream::writeSchema( std::ostream& fout )
|
||||
// PROTECTED METHODS
|
||||
|
||||
template<typename T>
|
||||
void OutputStream::writeArrayImplementation( const T* a, int writeSize, unsigned int numInRow )
|
||||
void OutputStream::writeArrayImplementation( const T* a, int write_size, unsigned int numInRow )
|
||||
{
|
||||
*this << writeSize << BEGIN_BRACKET;
|
||||
*this << write_size << BEGIN_BRACKET;
|
||||
if ( numInRow>1 )
|
||||
{
|
||||
for ( int i=0; i<writeSize; ++i )
|
||||
for ( int i=0; i<write_size; ++i )
|
||||
{
|
||||
if ( !(i%numInRow) )
|
||||
{
|
||||
@@ -571,7 +571,7 @@ void OutputStream::writeArrayImplementation( const T* a, int writeSize, unsigned
|
||||
else
|
||||
{
|
||||
*this << std::endl;
|
||||
for ( int i=0; i<writeSize; ++i )
|
||||
for ( int i=0; i<write_size; ++i )
|
||||
*this << (*a)[i] << std::endl;
|
||||
}
|
||||
*this << END_BRACKET << std::endl;
|
||||
|
||||
Reference in New Issue
Block a user