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
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
|
/*************************************************************************
*
* OpenOffice.org - a multi-platform office productivity suite
*
* $RCSfile: treesegment.hxx,v $
*
* $Revision: 1.5 $
*
* last change: $Author: rt $ $Date: 2005-09-08 04:00:27 $
*
* The Contents of this file are made available subject to
* the terms of GNU Lesser General Public License Version 2.1.
*
*
* GNU Lesser General Public License Version 2.1
* =============================================
* Copyright 2005 by Sun Microsystems, Inc.
* 901 San Antonio Road, Palo Alto, CA 94303, USA
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License version 2.1, as published by the Free Software Foundation.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston,
* MA 02111-1307 USA
*
************************************************************************/
#ifndef CONFIGMGR_TREESEGMENT_HXX
#define CONFIGMGR_TREESEGMENT_HXX
#ifndef _CONFIGMGR_TREE_VALUENODE_HXX
#include "valuenode.hxx"
#endif
#ifndef _RTL_REF_HXX_
#include <rtl/ref.hxx>
#endif
#ifndef INCLUDED_MEMORY
#include <memory>
#define INCLUDED_MEMORY
#endif // INCLUDED_MEMORY
// -----------------------------------------------------------------------------
namespace rtl { class OUString; }
// -----------------------------------------------------------------------------
namespace configmgr
{
// -----------------------------------------------------------------------------
class INode; // for RawTreeData
namespace sharable { struct TreeFragment; union Node; } // for TreeData (sharable)
// -----------------------------------------------------------------------------
namespace configuration { class Name; }
// -----------------------------------------------------------------------------
namespace memory
{
class Segment;
class Accessor;
class UpdateAccessor;
}
// -------------------------------------------------------------------------
namespace data
{
// -------------------------------------------------------------------------
class TreeAddress;
class TreeAccessor;
// -------------------------------------------------------------------------
class TreeSegment
{
struct Impl;
rtl::Reference<Impl> m_pImpl;
public:
typedef configuration::Name Name;
typedef std::auto_ptr<INode> RawTreeData;
typedef rtl::OUString RawName;
typedef sharable::Node const * NodeDataPtr;
typedef sharable::TreeFragment const * TreeDataPtr;
typedef sharable::TreeFragment * TreeDataUpdatePtr;
static TreeSegment createNew(RawTreeData _aTree, RawName const & _aTypeName)
{ return createNewSegment(_aTree,_aTypeName); }
static TreeSegment createNew(RawName const & _aTreeName, RawTreeData _aTree)
{ return createNewSegment(_aTreeName, _aTree); }
static TreeSegment createNew(TreeAccessor const & _aTree)
{ return createNewSegment(_aTree); }
TreeSegment();
TreeSegment(TreeSegment const & );
TreeSegment& operator=(TreeSegment const & );
~TreeSegment();
TreeSegment cloneSegment() const;
bool is() const;
void clear();
Name getName() const;
void setName(Name const & _aNewName);
void markRemovable();
memory::Segment * getSegment() const;
memory::Accessor getAccessor() const;
TreeAddress getBaseAddress() const;
TreeAccessor getTreeAccess() const;
// RawTreeData releaseData();
void clearData() { clear(); }
RawTreeData cloneData(bool bUseTreeName) const;
TreeDataPtr getTreeData() const;
NodeDataPtr getSegmentRootNode() const;
private:
TreeDataUpdatePtr getTreeDataForUpdate(memory::UpdateAccessor& _anUpdater) const;
private:
bool hasData() const { return !!m_pImpl.is(); }
static Impl* createNewSegment(RawName const & _aTreeName, RawTreeData& _aTree);
static Impl* createNewSegment(RawTreeData& _aTree, RawName const & _aTypeName);
static Impl* createNewSegment(TreeAccessor const & _aTree);
TreeSegment(Impl *);
};
// -------------------------------------------------------------------------
}
// -----------------------------------------------------------------------------
} // namespace configmgr
#endif // CONFIGMGR_SEGMENT_HXX
|