From: <wol...@us...> - 2004-04-17 17:33:12
|
Update of /cvsroot/csp/APPLICATIONS/SimData/Source In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv11640/Source Modified Files: Matrix3.cpp Quat.cpp Vector3.cpp Log Message: Changes to serialize and deserialize to binary buffers to use for network packets. Index: Matrix3.cpp =================================================================== RCS file: /cvsroot/csp/APPLICATIONS/SimData/Source/Matrix3.cpp,v retrieving revision 1.10 retrieving revision 1.11 diff -C2 -d -r1.10 -r1.11 *** Matrix3.cpp 19 Oct 2003 23:53:56 -0000 1.10 --- Matrix3.cpp 17 Apr 2004 17:33:02 -0000 1.11 *************** *** 343,346 **** --- 343,386 ---- } + int Matrix3::readBinary(const unsigned char * ptrBuf, int size) + { + if (size != 9*sizeof(double)) + { + printf("Matrix3::readBinary - buffer is incorrect size\n"); + return 0; + } + memcpy((void*)&_mat[0][0], (void*)ptrBuf, sizeof(double)); ptrBuf += sizeof(double); + memcpy((void*)&_mat[0][1], (void*)ptrBuf, sizeof(double)); ptrBuf += sizeof(double); + memcpy((void*)&_mat[0][2], (void*)ptrBuf, sizeof(double)); ptrBuf += sizeof(double); + memcpy((void*)&_mat[1][0], (void*)ptrBuf, sizeof(double)); ptrBuf += sizeof(double); + memcpy((void*)&_mat[1][1], (void*)ptrBuf, sizeof(double)); ptrBuf += sizeof(double); + memcpy((void*)&_mat[1][2], (void*)ptrBuf, sizeof(double)); ptrBuf += sizeof(double); + memcpy((void*)&_mat[2][0], (void*)ptrBuf, sizeof(double)); ptrBuf += sizeof(double); + memcpy((void*)&_mat[2][1], (void*)ptrBuf, sizeof(double)); ptrBuf += sizeof(double); + memcpy((void*)&_mat[2][2], (void*)ptrBuf, sizeof(double)); ptrBuf += sizeof(double); + return 9*sizeof(double); + + } + int Matrix3::writeBinary(unsigned char * ptrBuf, int size) + { + if (size != 9*sizeof(double)) + { + printf("Matrix3::writeBinary - buffer is incorrect size\n"); + return 0; + } + + memcpy((void*)ptrBuf, (void*)&_mat[0][0], sizeof(double)); ptrBuf += sizeof(double); + memcpy((void*)ptrBuf, (void*)&_mat[0][1], sizeof(double)); ptrBuf += sizeof(double); + memcpy((void*)ptrBuf, (void*)&_mat[0][2], sizeof(double)); ptrBuf += sizeof(double); + memcpy((void*)ptrBuf, (void*)&_mat[1][0], sizeof(double)); ptrBuf += sizeof(double); + memcpy((void*)ptrBuf, (void*)&_mat[1][1], sizeof(double)); ptrBuf += sizeof(double); + memcpy((void*)ptrBuf, (void*)&_mat[1][2], sizeof(double)); ptrBuf += sizeof(double); + memcpy((void*)ptrBuf, (void*)&_mat[2][0], sizeof(double)); ptrBuf += sizeof(double); + memcpy((void*)ptrBuf, (void*)&_mat[2][1], sizeof(double)); ptrBuf += sizeof(double); + memcpy((void*)ptrBuf, (void*)&_mat[2][2], sizeof(double)); ptrBuf += sizeof(double); + return 9*sizeof(double); + } + + std::ostream& operator<< (std::ostream& os, const Matrix3& m) { Index: Quat.cpp =================================================================== RCS file: /cvsroot/csp/APPLICATIONS/SimData/Source/Quat.cpp,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** Quat.cpp 19 Oct 2003 23:53:57 -0000 1.4 --- Quat.cpp 17 Apr 2004 17:33:03 -0000 1.5 *************** *** 353,356 **** --- 353,383 ---- } + int Quat::readBinary(const unsigned char * ptrBuf, int size) + { + if (size != sizeof(Quat)) + { + printf("Trying to read a binary Quat with the wrong size\n"); + return 0; + } + memcpy((void*)&_x, (void*)ptrBuf, sizeof(double)); ptrBuf += sizeof(double); + memcpy((void*)&_y, (void*)ptrBuf, sizeof(double)); ptrBuf += sizeof(double); + memcpy((void*)&_z, (void*)ptrBuf, sizeof(double)); ptrBuf += sizeof(double); + memcpy((void*)&_w, (void*)ptrBuf, sizeof(double)); ptrBuf += sizeof(double); + return 4*sizeof(double); + } + + int Quat::writeBinary(unsigned char * ptrBuf, int size) + { + if (size != sizeof(Quat)) + { + printf("Trying to write a binary Quat with the wrong size\n"); + return 0; + } + memcpy((void*)ptrBuf, (void*)&_x, sizeof(double)); ptrBuf += sizeof(double); + memcpy((void*)ptrBuf, (void*)&_y, sizeof(double)); ptrBuf += sizeof(double); + memcpy((void*)ptrBuf, (void*)&_z, sizeof(double)); ptrBuf += sizeof(double); + memcpy((void*)ptrBuf, (void*)&_w, sizeof(double)); ptrBuf += sizeof(double); + return 4*sizeof(double); + } NAMESPACE_SIMDATA_END Index: Vector3.cpp =================================================================== RCS file: /cvsroot/csp/APPLICATIONS/SimData/Source/Vector3.cpp,v retrieving revision 1.9 retrieving revision 1.10 diff -C2 -d -r1.9 -r1.10 *** Vector3.cpp 19 Oct 2003 23:53:57 -0000 1.9 --- Vector3.cpp 17 Apr 2004 17:33:03 -0000 1.10 *************** *** 84,87 **** --- 84,139 ---- } + /** + * Copy a vector into a binary buffer + */ + int Vector3::readBinary(const unsigned char * data, int size) { + + if (size != sizeof(Vector3)) + { + fprintf(stderr, "Illegal mem copy operation attempted\n"); + return 0; + } + + double dvalue; + printf("Vector3::readBinary() - loading double values binary into Vector3\n"); + memcpy((void*)&dvalue, (void*)data, sizeof(double)); data += sizeof(double); + printf("Vector3::readBinary() dvalue: %f\n", dvalue); + _x = dvalue; + memcpy((void*)&dvalue, (void*)data, sizeof(double)); data += sizeof(double); + printf("Vector3::readBinary() dvalue: %f\n", dvalue); + _y = dvalue; + memcpy((void*)&dvalue, (void*)data, sizeof(double)); + printf("Vector3::readBinary() dvalue: %f\n", dvalue); + _z = dvalue; + printf("Vector3::readBinary() - finished loading double values for Vector3\n"); + + return 3*sizeof(double); + } + + /** + * Copy a binary buffer into a vector. + */ + int Vector3::writeBinary(unsigned char * data, int size) { + + if (size != sizeof(Vector3)) + { + fprintf(stderr, "Illegal mem copy operation attempted\n"); + return 0; + } + + printf("Vector3::writeBinary() - loading Vector3 into binary buffer.\n"); + memcpy( (void*)data, (void*)&_x, sizeof(double)); data += sizeof(double); + printf("Vector3::writeBinary() - _x: %f\n", _x); + memcpy( (void*)data, (void*)&_y, sizeof(double)); data += sizeof(double); + printf("Vector3::writeBinary() - _y: %f\n", _y); + memcpy( (void*)data, (void*)&_z, sizeof(double)); + printf("Vector3::writeBinary() - _z: %f\n", _z); + printf("Vector3::writeBinary() - finished loading Vector3 values into binary buffer.\n"); + + return 3*sizeof(double); + + } + + NAMESPACE_SIMDATA_END |