Author: tabish Date: Thu Jan 11 11:04:55 2007 New Revision: 495335 URL: http://svn.apache.org/viewvc?view=rev&rev=495335 Log: http://issues.apache.org/activemq/browse/AMQCPP-25
Modified: incubator/activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/io/DataInputStream.cpp incubator/activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/io/DataOutputStream.cpp incubator/activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/util/Endian.h Modified: incubator/activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/io/DataInputStream.cpp URL: http://svn.apache.org/viewvc/incubator/activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/io/DataInputStream.cpp?view=diff&rev=495335&r1=495334&r2=495335 ============================================================================== --- incubator/activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/io/DataInputStream.cpp (original) +++ incubator/activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/io/DataInputStream.cpp Thu Jan 11 11:04:55 2007 @@ -141,13 +141,6 @@ value |= (byte1 << 8 | byte2 << 0); return value; - - //char* temp = (char*)&value; - // - //return (short)Endian::byteSwap( value ); - - //this->readFully( ( unsigned char* )&value, 0, sizeof( unsigned short ) ); - //return Endian::byteSwap( value ); } AMQ_CATCH_RETHROW( IOException ) AMQ_CATCHALL_THROW( IOException ) @@ -166,10 +159,6 @@ value |= (byte1 << 8 | byte2 << 0); return value; - -// unsigned short value; -// this->readFully( ( unsigned char* )&value, 0, sizeof( unsigned short ) ); -// return Endian::byteSwap( value ); } AMQ_CATCH_RETHROW( IOException ) AMQ_CATCHALL_THROW( IOException ) @@ -189,10 +178,6 @@ value |= (byte1 << 24 | byte2 << 16 | byte3 << 8 | byte4 << 0); return value; - -// unsigned int value; -// this->readFully( ( unsigned char* )&value, 0, sizeof( unsigned int ) ); -// return (int)Endian::byteSwap( value ); } AMQ_CATCH_RETHROW( IOException ) AMQ_CATCHALL_THROW( IOException ) @@ -202,13 +187,10 @@ double DataInputStream::readDouble() throw ( io::IOException, io::EOFException ) { try { - unsigned long long value = this->readLong(); - - return *((double*)&value); - -// double value; -// this->readFully( ( unsigned char* )&value, 0, sizeof( double ) ); -// return Endian::byteSwap( value ); + unsigned long long lvalue = this->readLong(); + double value = 0.0; + memcpy( &value, &lvalue, sizeof( unsigned long long ) ); + return value; } AMQ_CATCH_RETHROW( IOException ) AMQ_CATCHALL_THROW( IOException ) @@ -218,20 +200,10 @@ float DataInputStream::readFloat() throw ( io::IOException, io::EOFException ) { try { - unsigned int value = 0; - - unsigned char byte1 = this->readByte(); - unsigned char byte2 = this->readByte(); - unsigned char byte3 = this->readByte(); - unsigned char byte4 = this->readByte(); - - value |= (byte1 << 24 | byte2 << 16 | byte3 << 8 | byte4 << 0); - - return *((float*)&value); - -// float value; -// this->readFully( ( unsigned char* )&value, 0, sizeof( float ) ); -// return Endian::byteSwap( value ); + unsigned int lvalue = this->readInt(); + float value = 0.0f; + memcpy( &value, &lvalue, sizeof( unsigned int ) ); + return value; } AMQ_CATCH_RETHROW( IOException ) AMQ_CATCHALL_THROW( IOException ) @@ -257,10 +229,6 @@ byte5 << 24 | byte6 << 16 | byte7 << 8 | byte8 << 0 ); return value; - -// unsigned long long value; -// this->readFully( ( unsigned char* )&value, 0, sizeof( unsigned long long ) ); -// return (long long)Endian::byteSwap( value ); } AMQ_CATCH_RETHROW( IOException ) AMQ_CATCHALL_THROW( IOException ) @@ -309,7 +277,7 @@ void DataInputStream::readFully( std::vector< unsigned char >& buffer ) throw ( io::IOException, io::EOFException ) { try { - readFully( &buffer[0], 0, buffer.size() ); + this->readFully( &buffer[0], 0, buffer.size() ); } AMQ_CATCH_RETHROW( IOException ) AMQ_CATCHALL_THROW( IOException ) Modified: incubator/activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/io/DataOutputStream.cpp URL: http://svn.apache.org/viewvc/incubator/activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/io/DataOutputStream.cpp?view=diff&rev=495335&r1=495334&r2=495335 ============================================================================== --- incubator/activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/io/DataOutputStream.cpp (original) +++ incubator/activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/io/DataOutputStream.cpp Thu Jan 11 11:04:55 2007 @@ -90,7 +90,7 @@ unsigned char ivalue = 0; value == true ? ivalue = 1 : ivalue = 0; - write( ivalue ); + this->write( ivalue ); } AMQ_CATCH_RETHROW( IOException ) AMQ_CATCHALL_THROW( IOException ) @@ -99,7 +99,7 @@ //////////////////////////////////////////////////////////////////////////////// void DataOutputStream::writeByte( unsigned char value ) throw ( IOException ) { try { - write( value ); + this->write( value ); } AMQ_CATCH_RETHROW( IOException ) AMQ_CATCHALL_THROW( IOException ) @@ -108,7 +108,7 @@ //////////////////////////////////////////////////////////////////////////////// void DataOutputStream::writeShort( short value ) throw ( IOException ) { try { - writeUnsignedShort( (unsigned short)value ); + this->writeUnsignedShort( (unsigned short)value ); } AMQ_CATCH_RETHROW( IOException ) AMQ_CATCHALL_THROW( IOException ) @@ -136,10 +136,10 @@ //////////////////////////////////////////////////////////////////////////////// void DataOutputStream::writeInt( int value ) throw ( IOException ) { try { - write( (unsigned char)( (value & 0xFF000000) >> 24 ) ); - write( (unsigned char)( (value & 0x00FF0000) >> 16 ) ); - write( (unsigned char)( (value & 0x0000FF00) >> 8 ) ); - write( (unsigned char)( (value & 0x000000FF) >> 0 ) ); + this->write( (unsigned char)( (value & 0xFF000000) >> 24 ) ); + this->write( (unsigned char)( (value & 0x00FF0000) >> 16 ) ); + this->write( (unsigned char)( (value & 0x0000FF00) >> 8 ) ); + this->write( (unsigned char)( (value & 0x000000FF) >> 0 ) ); } AMQ_CATCH_RETHROW( IOException ) AMQ_CATCHALL_THROW( IOException ) @@ -148,14 +148,14 @@ //////////////////////////////////////////////////////////////////////////////// void DataOutputStream::writeLong( long long value ) throw ( IOException ) { try { - write( (unsigned char)( (value & 0xFF00000000000000ULL) >> 56 ) ); - write( (unsigned char)( (value & 0x00FF000000000000ULL) >> 48 ) ); - write( (unsigned char)( (value & 0x0000FF0000000000ULL) >> 40 ) ); - write( (unsigned char)( (value & 0x000000FF00000000ULL) >> 32 ) ); - write( (unsigned char)( (value & 0x00000000FF000000ULL) >> 24 ) ); - write( (unsigned char)( (value & 0x0000000000FF0000ULL) >> 16 ) ); - write( (unsigned char)( (value & 0x000000000000FF00ULL) >> 8 ) ); - write( (unsigned char)( (value & 0x00000000000000FFULL) >> 0 ) ); + this->write( (unsigned char)( (value & 0xFF00000000000000ULL) >> 56 ) ); + this->write( (unsigned char)( (value & 0x00FF000000000000ULL) >> 48 ) ); + this->write( (unsigned char)( (value & 0x0000FF0000000000ULL) >> 40 ) ); + this->write( (unsigned char)( (value & 0x000000FF00000000ULL) >> 32 ) ); + this->write( (unsigned char)( (value & 0x00000000FF000000ULL) >> 24 ) ); + this->write( (unsigned char)( (value & 0x0000000000FF0000ULL) >> 16 ) ); + this->write( (unsigned char)( (value & 0x000000000000FF00ULL) >> 8 ) ); + this->write( (unsigned char)( (value & 0x00000000000000FFULL) >> 0 ) ); } AMQ_CATCH_RETHROW( IOException ) AMQ_CATCHALL_THROW( IOException ) @@ -164,7 +164,10 @@ //////////////////////////////////////////////////////////////////////////////// void DataOutputStream::writeFloat( float value ) throw ( IOException ) { try { - this->writeInt( *((unsigned int*)&value) ); + unsigned int lvalue = 0; + memcpy( &lvalue, &value, sizeof( float ) ); + this->writeInt( lvalue ); + memcpy( &value, &lvalue, sizeof( unsigned int ) ); } AMQ_CATCH_RETHROW( IOException ) AMQ_CATCHALL_THROW( IOException ) @@ -173,7 +176,10 @@ //////////////////////////////////////////////////////////////////////////////// void DataOutputStream::writeDouble( double value ) throw ( IOException ) { try { - writeLong( *((unsigned long long*)&value) ); + unsigned long long lvalue = 0; + memcpy( &lvalue, &value, sizeof( double ) ); + this->writeLong( lvalue ); + memcpy( &value, &lvalue, sizeof( unsigned long long ) ); } AMQ_CATCH_RETHROW( IOException ) AMQ_CATCHALL_THROW( IOException ) Modified: incubator/activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/util/Endian.h URL: http://svn.apache.org/viewvc/incubator/activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/util/Endian.h?view=diff&rev=495335&r1=495334&r2=495335 ============================================================================== --- incubator/activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/util/Endian.h (original) +++ incubator/activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/util/Endian.h Thu Jan 11 11:04:55 2007 @@ -17,6 +17,8 @@ #ifndef ACTIVEMQ_UTIL_ENDIAN_H #define ACTIVEMQ_UTIL_ENDIAN_H +#include <activemq/util/Config.h> + namespace activemq{ namespace util{ @@ -82,16 +84,18 @@ (((unsigned long long)value & 0x000000000000FF00ULL ) << 40 ) | (((unsigned long long)value & 0x00000000000000FFULL ) << 56 ); } - + static float byteSwap( float value ){ #ifdef WORDS_BIGENDIAN return value; #endif - unsigned int lvalue = *((unsigned int*)&value); + unsigned int lvalue = 0; + memcpy( &lvalue, &value, sizeof( float ) ); lvalue = byteSwap( lvalue ); - return *((float*)&lvalue); + memcpy( &value, &lvalue, sizeof( unsigned int ) ); + return value; } static double byteSwap( double value ){ @@ -100,9 +104,11 @@ return value; #endif - unsigned long long lvalue = *((unsigned long long*)&value); + unsigned long long lvalue = 0; + memcpy( &lvalue, &value, sizeof( double ) ); lvalue = byteSwap( lvalue ); - return *((double*)&lvalue); + memcpy( &value, &lvalue, sizeof( unsigned long long ) ); + return value; } };