Update of /cvsroot/gcblue/gcb_wx/src/common
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv27636/src/common
Modified Files:
simmath.cpp
Added Files:
tcStream.cpp
Log Message:
Multiplayer related updates
Index: simmath.cpp
===================================================================
RCS file: /cvsroot/gcblue/gcb_wx/src/common/simmath.cpp,v
retrieving revision 1.8
retrieving revision 1.9
diff -C2 -d -r1.8 -r1.9
*** simmath.cpp 9 Apr 2004 03:08:08 -0000 1.8
--- simmath.cpp 13 Apr 2004 00:24:38 -0000 1.9
***************
*** 21,24 ****
--- 21,25 ----
#include "simmath.h"
#include "nsNav.h"
+ #include "common/tcStream.h"
void ConformLonLatRad(float &lon_rad, float &lat_rad) {
***************
*** 316,319 ****
--- 317,346 ----
}
}
+
+ /********************** tsGeoPoint *************************************/
+ /**
+ * Load state from stream
+ */
+ tcStream& tsGeoPoint::operator<<(tcStream& stream)
+ {
+ stream >> mfLon_rad;
+ stream >> mfLat_rad;
+ stream >> mfAlt_m;
+
+ return stream;
+ }
+
+ /**
+ * Save state to stream
+ */
+ tcStream& tsGeoPoint::operator>>(tcStream& stream)
+ {
+ stream << mfLon_rad;
+ stream << mfLat_rad;
+ stream << mfAlt_m;
+
+ return stream;
+ }
+
/******************************* tcKinematics *******************************/
***************
*** 392,419 ****
}
! void tcKinematics::LoadFromStream(std::stringstream& buffer)
{
! buffer.read((char*)&mfLon_rad, sizeof(mfLon_rad));
! buffer.read((char*)&mfLat_rad, sizeof(mfLat_rad));
! buffer.read((char*)&mfAlt_m, sizeof(mfAlt_m));
! buffer.read((char*)&mfHeading_rad, sizeof(mfHeading_rad));
! buffer.read((char*)&mfClimbAngle_rad, sizeof(mfClimbAngle_rad));
! buffer.read((char*)&mfYaw_rad, sizeof(mfYaw_rad));
! buffer.read((char*)&mfPitch_rad, sizeof(mfPitch_rad));
! buffer.read((char*)&mfRoll_rad, sizeof(mfRoll_rad));
! buffer.read((char*)&mfSpeed_kts, sizeof(mfSpeed_kts));
}
! void tcKinematics::SaveToStream(std::stringstream& buffer)
{
! buffer.write((char*)&mfLon_rad, sizeof(mfLon_rad));
! buffer.write((char*)&mfLat_rad, sizeof(mfLat_rad));
! buffer.write((char*)&mfAlt_m, sizeof(mfAlt_m));
! buffer.write((char*)&mfHeading_rad, sizeof(mfHeading_rad));
! buffer.write((char*)&mfClimbAngle_rad, sizeof(mfClimbAngle_rad));
! buffer.write((char*)&mfYaw_rad, sizeof(mfYaw_rad));
! buffer.write((char*)&mfPitch_rad, sizeof(mfPitch_rad));
! buffer.write((char*)&mfRoll_rad, sizeof(mfRoll_rad));
! buffer.write((char*)&mfSpeed_kts, sizeof(mfSpeed_kts));
}
--- 419,456 ----
}
! /**
! * Load state from stream
! */
! tcStream& tcKinematics::operator<<(tcStream& stream)
{
! stream >> mfLon_rad;
! stream >> mfLat_rad;
! stream >> mfAlt_m;
! stream >> mfHeading_rad;
! stream >> mfClimbAngle_rad;
! stream >> mfYaw_rad;
! stream >> mfPitch_rad;
! stream >> mfRoll_rad;
! stream >> mfSpeed_kts;
!
! return stream;
}
! /**
! * Save state to stream
! */
! tcStream& tcKinematics::operator>>(tcStream& stream)
{
! stream << mfLon_rad;
! stream << mfLat_rad;
! stream << mfAlt_m;
! stream << mfHeading_rad;
! stream << mfClimbAngle_rad;
! stream << mfYaw_rad;
! stream << mfPitch_rad;
! stream << mfRoll_rad;
! stream << mfSpeed_kts;
!
! return stream;
}
--- NEW FILE: tcStream.cpp ---
#include "tcStream.h"
#include <iostream>
/**
* creates stream from char array
*/
tcStream::tcStream(const char* data, std::streamsize count)
{
std::stringstream::write(data, count);
}
/**
* default constructor
*/
tcStream::tcStream()
{
}
/**
* @return true if end of stream has been reached
*/
bool tcStream::eof()
{
return std::stringstream::eof();
}
void tcStream::read(char* buff, std::streamsize count)
{
std::stringstream::read(buff, count);
}
/**
* @return size of stream in bytes
*/
size_t tcStream::size()
{
return std::stringstream::str().size();
}
void tcStream::write(const char* buff, std::streamsize count)
{
std::stringstream::write(buff, count);
}
/*** write operators ***/
tcStream& tcStream::operator<<(int& val)
{
write((char*)&val, sizeof(val));
return *this;
}
tcStream& tcStream::operator<<(long& val)
{
write((char*)&val, sizeof(val));
return *this;
}
tcStream& tcStream::operator<<(unsigned char& val)
{
write((char*)&val, sizeof(val));
return *this;
}
tcStream& tcStream::operator<<(unsigned int& val)
{
write((char*)&val, sizeof(val));
return *this;
}
tcStream& tcStream::operator<<(bool& val)
{
write((char*)&val, sizeof(val));
return *this;
}
tcStream& tcStream::operator<<(float& val)
{
write((char*)&val, sizeof(val));
return *this;
}
tcStream& tcStream::operator<<(double& val)
{
write((char*)&val, sizeof(val));
return *this;
}
tcStream& tcStream::operator<<(std::string& val)
{
size_t len = val.size();
write((char*)&len, sizeof(len));
write(val.c_str(), (std::streamsize)len);
return *this;
}
/*** read operators ***/
tcStream& tcStream::operator>>(int& val)
{
read((char*)&val, sizeof(val));
return *this;
}
tcStream& tcStream::operator>>(long& val)
{
read((char*)&val, sizeof(val));
return *this;
}
tcStream& tcStream::operator>>(unsigned char& val)
{
read((char*)&val, sizeof(val));
return *this;
}
tcStream& tcStream::operator>>(unsigned int& val)
{
read((char*)&val, sizeof(val));
return *this;
}
tcStream& tcStream::operator>>(bool& val)
{
read((char*)&val, sizeof(val));
return *this;
}
tcStream& tcStream::operator>>(float& val)
{
read((char*)&val, sizeof(val));
return *this;
}
tcStream& tcStream::operator>>(double& val)
{
read((char*)&val, sizeof(val));
return *this;
}
tcStream& tcStream::operator>>(std::string& val)
{
size_t len;
read((char*)&len, sizeof(len));
if (len >= 2048)
{
std::cerr << "tcStream::operator>>(std::string& val) - length overflow\n";
}
else
{
char* buffer = new char[len+1];
read(buffer, (std::streamsize)len);
buffer[len] = 0; // add terminating null char
val = buffer;
delete buffer;
}
return *this;
}
|