1 /*************************************************************************
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
5 * Copyright 2008 by Sun Microsystems, Inc.
7 * OpenOffice.org - a multi-platform office productivity suite
9 * $RCSfile: mergechange.hxx,v $
12 * This file is part of OpenOffice.org.
14 * OpenOffice.org is free software: you can redistribute it and/or modify
15 * it under the terms of the GNU Lesser General Public License version 3
16 * only, as published by the Free Software Foundation.
18 * OpenOffice.org is distributed in the hope that it will be useful,
19 * but WITHOUT ANY WARRANTY; without even the implied warranty of
20 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
21 * GNU Lesser General Public License version 3 for more details
22 * (a copy is included in the LICENSE file that accompanied this code).
24 * You should have received a copy of the GNU Lesser General Public License
25 * version 3 along with OpenOffice.org. If not, see
26 * <http://www.openoffice.org/license.html>
27 * for a copy of the LGPLv3 License.
29 ************************************************************************/
31 #ifndef INCLUDED_CONFIGMGR_MERGECHANGE_HXX
32 #define INCLUDED_CONFIGMGR_MERGECHANGE_HXX
34 #include "namecreator.hxx"
36 #include "treechangelist.hxx"
40 // method that applies changes on a existing subtree
41 void combineUpdates (SubtreeChange
const& _anUpdate
, SubtreeChange
& _aCombinedUpdate
);
43 // -----------------------------------------------------------------------------
44 class OStripDefaults
: private ChangeTreeModification
46 SubtreeChange
& m_rParent
;
48 OStripDefaults(SubtreeChange
& _rSubtree
) : m_rParent(_rSubtree
) {}
50 bool isEmpty() const { return m_rParent
.size() == 0; }
52 OStripDefaults
& strip();
54 static bool strip(SubtreeChange
& _rSubtree
)
56 return OStripDefaults(_rSubtree
).strip().isEmpty();
59 void stripOne(Change
& _rChange
);
61 virtual void handle(ValueChange
& _rValueNode
);
62 virtual void handle(AddNode
& _rAddNode
);
63 virtual void handle(RemoveNode
& _rRemoveNode
);
64 virtual void handle(SubtreeChange
& _rSubtree
);
67 // -----------------------------------------------------------------------------
68 } // namespace configmgr