//+------------------------------------------------------------------------- // // Microsoft Windows // Copyright (C) Microsoft Corporation, 1992 - 1992. // // File: MemDeSer.cxx // // History: 29-Jul-94 KyleP Created // //-------------------------------------------------------------------------- #include #pragma hdrstop #include BYTE CQMemDeSerStream::GetByte() { BYTE b = *_pbCurrent; _pbCurrent += 1; return(b); } void CQMemDeSerStream::SkipByte() { _pbCurrent += 1; } void CQMemDeSerStream::GetChar( char * pc, ULONG cc ) { memcpy( pc, _pbCurrent, cc ); _pbCurrent += cc; } void CQMemDeSerStream::SkipChar( ULONG cc ) { _pbCurrent += cc; } void CQMemDeSerStream::GetWChar( WCHAR * pwc, ULONG cc ) { WCHAR * pwcTemp = AlignWCHAR(_pbCurrent); memcpy( pwc, pwcTemp, cc * sizeof(WCHAR) ); _pbCurrent = (BYTE *)(pwcTemp + cc); } void CQMemDeSerStream::SkipWChar( ULONG cc ) { WCHAR * pwcTemp = AlignWCHAR(_pbCurrent); _pbCurrent = (BYTE *)(pwcTemp + cc); } USHORT CQMemDeSerStream::GetUShort() { USHORT * pus = AlignUSHORT(_pbCurrent); _pbCurrent = (BYTE *)(pus + 1); return( *pus ); } void CQMemDeSerStream::SkipUShort() { USHORT * pus = AlignUSHORT(_pbCurrent); _pbCurrent = (BYTE *)(pus + 1); } ULONG CQMemDeSerStream::GetULong() { ULONG * pul = AlignULONG(_pbCurrent); _pbCurrent = (BYTE *)(pul + 1); return( *pul ); } void CQMemDeSerStream::SkipULong() { ULONG * pul = AlignULONG(_pbCurrent); _pbCurrent = (BYTE *)(pul + 1); } long CQMemDeSerStream::GetLong() { long * pl = AlignLong(_pbCurrent); _pbCurrent = (BYTE *)(pl + 1); return( *pl ); } void CQMemDeSerStream::SkipLong() { long * pl = AlignLong(_pbCurrent); _pbCurrent = (BYTE *)(pl + 1); } float CQMemDeSerStream::GetFloat() { float * pf = AlignFloat(_pbCurrent); _pbCurrent = (BYTE *)(pf + 1); return( *pf ); } void CQMemDeSerStream::SkipFloat() { float * pf = AlignFloat(_pbCurrent); _pbCurrent = (BYTE *)(pf + 1); } double CQMemDeSerStream::GetDouble() { double * pd = AlignDouble(_pbCurrent); _pbCurrent = (BYTE *)(pd + 1); return( *pd ); } void CQMemDeSerStream::SkipDouble() { double * pd = AlignDouble(_pbCurrent); _pbCurrent = (BYTE *)(pd + 1); } ULONG CQMemDeSerStream::PeekULong() { ULONG * pul = AlignULONG(_pbCurrent); return( *pul ); } char * CQMemDeSerStream::GetString() { ULONG * pul = AlignULONG(_pbCurrent); ULONG len = *pul; _pbCurrent = (BYTE *)(pul + 1); char * psz = new char[len+1]; memcpy(psz, _pbCurrent, len); _pbCurrent += len; psz[len] = 0; return(psz); } WCHAR * CQMemDeSerStream::GetWString() { ULONG * pul = AlignULONG(_pbCurrent); ULONG len = *pul; WCHAR * pwsz = new WCHAR[len + 1]; _pbCurrent = (BYTE *)(pul + 1); memcpy(pwsz, _pbCurrent, len * sizeof(WCHAR) ); _pbCurrent += len * sizeof(WCHAR); pwsz[len] = 0; return(pwsz); } void CQMemDeSerStream::GetBlob( BYTE * pb, ULONG cb ) { memcpy( pb, _pbCurrent, cb ); _pbCurrent += cb; } void CQMemDeSerStream::SkipBlob( ULONG cb ) { _pbCurrent += cb; } void CQMemDeSerStream::GetGUID( GUID & guid ) { GUID * pguid = (GUID *)AlignGUID(_pbCurrent); memcpy( &guid, pguid, sizeof(guid) ); _pbCurrent = (BYTE *)(pguid + 1); } void CQMemDeSerStream::SkipGUID() { GUID * pguid = (GUID *)AlignGUID(_pbCurrent); _pbCurrent = (BYTE *)(pguid + 1); }