用来序列化通用的数据类型
来源:互联网 发布:网络歌手夕阳醉了 编辑:程序博客网 时间:2024/06/07 16:26
-
-
-
-
-
-
-
-
- #include "stdafx.h"
- #include "StandardSerialize.h"
-
-
- CStandardSerialize::CStandardSerialize(char * apBuffer,long alBufLen, ENUM_TYPE abyType)
- {
- mpBuffer = apBuffer;
- mbyType = abyType;
- mlBufLen = alBufLen;
- mlDataLen = 0;
- }
-
- CStandardSerialize::~CStandardSerialize()
- {
- }
-
- long CStandardSerialize::getDataLen()
- {
- return mlDataLen;
- }
-
- int CStandardSerialize::Serialize(bool& abValue)
- {
- if (mlBufLen < (mlDataLen+1))
- throw(-1);
-
- if (mbyType == LOAD)
- {
- memcpy(&abValue,mpBuffer + mlDataLen, 1);
- }
- else
- {
- memcpy(mpBuffer + mlDataLen, &abValue, 1);
- }
- mlDataLen += 1;
-
- return 1;
- }
-
-
- int CStandardSerialize::Serialize(int& aiValue)
- {
- if (mlBufLen < (mlDataLen+4))
- throw(-1);
-
- if (mbyType == LOAD)
- {
- memcpy(&aiValue,mpBuffer + mlDataLen, 4);
- }
- else
- {
- memcpy(mpBuffer + mlDataLen, &aiValue, 4);
- }
- mlDataLen += 4;
- return 1;
- }
-
- int CStandardSerialize::Serialize(BYTE& abyValue)
- {
- if (mlBufLen < (mlDataLen+1))
- throw(-1);
-
- if (mbyType == LOAD)
- {
- memcpy(&abyValue,mpBuffer + mlDataLen, 1);
- }
- else
- {
- memcpy(mpBuffer + mlDataLen, &abyValue, 1);
- }
- mlDataLen += 1;
- return 1;
- }
-
-
-
-
-
-
-
-
-
-
-
- int CStandardSerialize::Serialize(short& asValue)
- {
- if (mlBufLen < (mlDataLen+2))
- throw(-1);
-
- if (mbyType == LOAD)
- {
- memcpy(&asValue,mpBuffer + mlDataLen, 2);
- }
- else
- {
- memcpy(mpBuffer + mlDataLen, &asValue, 2);
- }
- mlDataLen += 2;
- return 1;
-
- }
-
- int CStandardSerialize::Serialize(WORD& awValue)
- {
- if (mlBufLen < (mlDataLen+2))
- throw(-1);
-
- if (mbyType == LOAD)
- {
- memcpy(&awValue,mpBuffer + mlDataLen, 2);
- }
- else
- {
- memcpy(mpBuffer + mlDataLen, &awValue, 2);
- }
- mlDataLen += 2;
- return 1;
- }
-
- int CStandardSerialize::Serialize(long& alValue)
- {
- if (mlBufLen < (mlDataLen+4))
- throw(-1);
-
- if (mbyType == LOAD)
- {
- memcpy(&alValue,mpBuffer + mlDataLen, 4);
- }
- else
- {
- memcpy(mpBuffer + mlDataLen, &alValue, 4);
- }
- mlDataLen += 4;
- return 1;
- }
-
- int CStandardSerialize::Serialize(unsigned long& aulValue)
- {
- if (mlBufLen < (mlDataLen+4))
- throw(-1);
-
- if (mbyType == LOAD)
- {
- memcpy(&aulValue,mpBuffer + mlDataLen, 4);
- }
- else
- {
- memcpy(mpBuffer + mlDataLen, &aulValue, 4);
- }
- mlDataLen += 4;
-
- return 1;
- }
-
- int CStandardSerialize::Serialize(__int64& aiValue)
- {
- if (mlBufLen < (mlDataLen+8))
- throw(-1);
-
- if (mbyType == LOAD)
- {
- memcpy(&aiValue,mpBuffer + mlDataLen, 8);
- }
- else
- {
- memcpy(mpBuffer + mlDataLen, &aiValue, 8);
- }
- mlDataLen += 8;
-
- return 1;
- }
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- int CStandardSerialize::Serialize(char * apValue,WORD awMaxLen)
- {
- if (mlBufLen < (mlDataLen+2))
- throw(-1);
-
- WORD lwLen = 0;
- if (mbyType == LOAD)
- {
-
- memcpy(&lwLen,mpBuffer + mlDataLen, 2);
- mlDataLen += 2;
-
-
- if ((lwLen >= awMaxLen) || ((mlDataLen+lwLen) > mlBufLen))
- {
- throw(-1);
- }
- memcpy(apValue, mpBuffer + mlDataLen, lwLen);
- apValue[lwLen] = '\0';
- mlDataLen += lwLen;
- }
- else
- {
-
- lwLen = strlen(apValue);
- if ((lwLen >= awMaxLen) || (lwLen+mlDataLen+2 > mlBufLen))
- throw(-1);
-
- memcpy(mpBuffer+mlDataLen, &lwLen, 2);
- mlDataLen += 2;
-
-
- memcpy(mpBuffer+mlDataLen, apValue, lwLen);
- mlDataLen += lwLen;
- }
- return 1;
- }
-
-
-
-
-
-
-
-
-
- int CStandardSerialize::Serialize(char * apValue, WORD awLen,WORD aiBufferLen)
- {
- if ((awLen > aiBufferLen) || (mlBufLen < (mlDataLen+awLen)))
- throw (-1);
-
- if (mbyType == LOAD)
- {
-
- memcpy(apValue, mpBuffer + mlDataLen, awLen);
- }
- else
- {
- memcpy(mpBuffer+mlDataLen, apValue, awLen);
- }
- mlDataLen += awLen;
- return 1;
- }