summaryrefslogtreecommitdiffstats
path: root/public/sdk/inc/memdeser.hxx
blob: b5998518c97ff4041bc6ec07b7ea3c9e6e63d82a (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
//+-------------------------------------------------------------------------
//
//  Microsoft Windows
//  Copyright (C) Microsoft Corporation, 1992 - 1992.
//
//  File:       MemDeSer.hxx
//
//  History:    29-Jul-94 KyleP     Created
//
//--------------------------------------------------------------------------

#if !defined( __MEMDESER_HXX__ )
#define __MEMDESER_HXX__

#include <restrict.hxx>
#include <SStream.hxx>

class CMemDeSerStream : public PDeSerStream
{
public:

    inline CMemDeSerStream( BYTE *pb, ULONG cb);

    virtual ~CMemDeSerStream() {};

    virtual BYTE GetByte();
    virtual void SkipByte();

    virtual void GetChar( char * pc, ULONG cc );
    virtual void SkipChar( ULONG cc );

    virtual void GetWChar( WCHAR * pwc, ULONG cc );
    virtual void SkipWChar( ULONG cc );

    virtual USHORT GetUShort();
    virtual void   SkipUShort();

    virtual ULONG GetULong();
    virtual void  SkipULong();
    virtual ULONG PeekULong();

    virtual long GetLong();
    virtual void SkipLong();

#if defined(KERNEL)     // Can not return floating point #'s in the kernel

    virtual ULONG    GetFloat();
    virtual LONGLONG GetDouble();

#else

    virtual float GetFloat();
    virtual double GetDouble();

#endif
    virtual void  SkipFloat();
    virtual void  SkipDouble();

    virtual char * GetString();

    virtual WCHAR * GetWString();

    virtual void GetBlob( BYTE * pb, ULONG cb );
    virtual void SkipBlob( ULONG cb );

    virtual void GetGUID( GUID & guid );
    virtual void SkipGUID();

protected:

    BYTE * _pbCurrent;
    BYTE * _pbEnd;
};

inline CMemDeSerStream::CMemDeSerStream( BYTE * pb, ULONG cb )
        : _pbCurrent( pb )
{
    _pbEnd = _pbCurrent + cb;
}

#endif // __MEMDESER_HXX__