summaryrefslogtreecommitdiffstats
path: root/private/ole32/stg/ref/h/dffuncs.hxx
blob: 07f0c69dac8c9596484426d507e8eed703541eb9 (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
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
//+---------------------------------------------------------------------------
//
//  Microsoft Windows
//  Copyright (C) Microsoft Corporation, 1992 - 1992.
//
//  File:	dffuncs.hxx
//
//  Contents:	CDocFile inline functions
//              In a separate file to avoid circular dependencies
//
//----------------------------------------------------------------------------

#ifndef __DFFUNCS_HXX__
#define __DFFUNCS_HXX__

#include <cdocfile.hxx>
#include <sstream.hxx>

//+--------------------------------------------------------------
//
//  Member:     CDocFile::CDocFile, public
//
//  Synopsis:   Empty object ctor
//
//  Aguments:   [dl] - LUID
//              [pdfb] - Basis
//
//---------------------------------------------------------------


inline CDocFile::CDocFile(DFLUID dl, ILockBytes *pilbBase)
        : PDocFile(dl)
{
    _cReferences = 0;
    _pilbBase = pilbBase;
}

//+--------------------------------------------------------------
//
//  Member:     CDocFile::CDocFile, public
//
//  Synopsis:   Handle-setting construction
//
//  Arguments:  [pms] - MultiStream to use
//		[sid] - SID to use
//              [dl] - LUID
//              [pdfb] - Basis
//
//---------------------------------------------------------------

inline CDocFile::CDocFile(CMStream MSTREAM_NEAR *pms,
			  SID sid,
                          DFLUID dl,
                          ILockBytes *pilbBase)
        : PDocFile(dl)
{
    _stgh.Init(pms, sid);
    _cReferences = 0;
    _pilbBase = pilbBase;
}

//+--------------------------------------------------------------
//
//  Member:	CDocFile::~CDocFile, public
//
//  Synopsis:	Destructor
//
//---------------------------------------------------------------

inline CDocFile::~CDocFile(void)
{
    olAssert(_cReferences == 0);
    if (_stgh.IsValid())
    {
        if (_stgh.IsRoot())
	    DllReleaseMultiStream(_stgh.GetMS());
    }
}


//+--------------------------------------------------------------
//
//  Member:	CDocFile::GetHandle, public
//
//  Synopsis:	Returns the handle
//
//---------------------------------------------------------------


inline CStgHandle *CDocFile::GetHandle(void)
{
    return &_stgh;
}


//+---------------------------------------------------------------------------
//
//  Member:	CDocFile::DecRef, public
//
//  Synopsis:	Decrements the ref count
//
//----------------------------------------------------------------------------


inline void CDocFile::DecRef(void)
{
    AtomicDec(&_cReferences);
}



#endif // #ifndef __DFFUNCS_HXX__