xref: /trunk/main/configmgr/source/node.hxx (revision 06db55ca6e7b86cf496b9e4c4bd824b1b77c53c0)
1a2faadffSAndrew Rist /**************************************************************
2cdf0e10cSrcweir  *
3a2faadffSAndrew Rist  * Licensed to the Apache Software Foundation (ASF) under one
4a2faadffSAndrew Rist  * or more contributor license agreements.  See the NOTICE file
5a2faadffSAndrew Rist  * distributed with this work for additional information
6a2faadffSAndrew Rist  * regarding copyright ownership.  The ASF licenses this file
7a2faadffSAndrew Rist  * to you under the Apache License, Version 2.0 (the
8a2faadffSAndrew Rist  * "License"); you may not use this file except in compliance
9a2faadffSAndrew Rist  * with the License.  You may obtain a copy of the License at
10cdf0e10cSrcweir  *
11a2faadffSAndrew Rist  *   http://www.apache.org/licenses/LICENSE-2.0
12cdf0e10cSrcweir  *
13a2faadffSAndrew Rist  * Unless required by applicable law or agreed to in writing,
14a2faadffSAndrew Rist  * software distributed under the License is distributed on an
15a2faadffSAndrew Rist  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16a2faadffSAndrew Rist  * KIND, either express or implied.  See the License for the
17a2faadffSAndrew Rist  * specific language governing permissions and limitations
18a2faadffSAndrew Rist  * under the License.
19cdf0e10cSrcweir  *
20a2faadffSAndrew Rist  *************************************************************/
21a2faadffSAndrew Rist 
22cdf0e10cSrcweir #ifndef INCLUDED_CONFIGMGR_SOURCE_NODE_HXX
23cdf0e10cSrcweir #define INCLUDED_CONFIGMGR_SOURCE_NODE_HXX
24cdf0e10cSrcweir 
25cdf0e10cSrcweir #include "sal/config.h"
26cdf0e10cSrcweir 
27cdf0e10cSrcweir #include "rtl/ref.hxx"
28cdf0e10cSrcweir #include "salhelper/simplereferenceobject.hxx"
29cdf0e10cSrcweir 
30cdf0e10cSrcweir #include "nodemap.hxx"
31cdf0e10cSrcweir 
32cdf0e10cSrcweir namespace rtl { class OUString; }
33cdf0e10cSrcweir 
34cdf0e10cSrcweir namespace configmgr {
35cdf0e10cSrcweir 
36afd9e319SArrigo Marchiori /**
37afd9e319SArrigo Marchiori  * Configuration element.
38afd9e319SArrigo Marchiori  *
39afd9e319SArrigo Marchiori  * This class represent either a "node" or a "property" in the words of the
40afd9e319SArrigo Marchiori  * OpenOffice.org Registry Format (OOR).
41afd9e319SArrigo Marchiori  */
42cdf0e10cSrcweir class Node: public salhelper::SimpleReferenceObject {
43cdf0e10cSrcweir public:
44*06db55caSmseidel     // Identifies the type of configuration element.
45cdf0e10cSrcweir     enum Kind {
46afd9e319SArrigo Marchiori         /** Property (<prop> element)
47afd9e319SArrigo Marchiori          *
48afd9e319SArrigo Marchiori          * Identifies instances of PropertyNode.
49afd9e319SArrigo Marchiori          */
50afd9e319SArrigo Marchiori         KIND_PROPERTY,
51afd9e319SArrigo Marchiori         /** Localized property (<prop> element)
52afd9e319SArrigo Marchiori          *
53afd9e319SArrigo Marchiori          * Identifies instances of LocalizedPropertyNode.
54afd9e319SArrigo Marchiori          */
55afd9e319SArrigo Marchiori         KIND_LOCALIZED_PROPERTY,
56afd9e319SArrigo Marchiori         /**
57afd9e319SArrigo Marchiori          * Value of a property (<value> element)
58afd9e319SArrigo Marchiori          *
59afd9e319SArrigo Marchiori          * Identifies instances of LocalizedValueNode.
60afd9e319SArrigo Marchiori          */
61afd9e319SArrigo Marchiori         KIND_LOCALIZED_VALUE,
6213d3b75cSArrigo Marchiori         /** Group member node (<node> element)
63afd9e319SArrigo Marchiori          *
64afd9e319SArrigo Marchiori          * Identifies instances of GroupNode.
65afd9e319SArrigo Marchiori          */
66afd9e319SArrigo Marchiori         KIND_GROUP,
6713d3b75cSArrigo Marchiori         /** Set member node (<node> element)
68afd9e319SArrigo Marchiori          *
69afd9e319SArrigo Marchiori          * Identifies instances of SetNode.
70afd9e319SArrigo Marchiori          */
71afd9e319SArrigo Marchiori         KIND_SET,
7213d3b75cSArrigo Marchiori     };
73cdf0e10cSrcweir 
74cdf0e10cSrcweir     virtual Kind kind() const = 0;
75cdf0e10cSrcweir 
76cdf0e10cSrcweir     virtual rtl::Reference< Node > clone(bool keepTemplateName) const = 0;
77cdf0e10cSrcweir 
78cdf0e10cSrcweir     virtual NodeMap & getMembers();
79cdf0e10cSrcweir 
80cdf0e10cSrcweir     virtual rtl::OUString getTemplateName() const;
81cdf0e10cSrcweir 
82cdf0e10cSrcweir     virtual void setMandatory(int layer);
83cdf0e10cSrcweir 
84cdf0e10cSrcweir     virtual int getMandatory() const;
85cdf0e10cSrcweir 
86cdf0e10cSrcweir     void setLayer(int layer);
87cdf0e10cSrcweir 
88cdf0e10cSrcweir     int getLayer() const;
89cdf0e10cSrcweir 
90cdf0e10cSrcweir     void setFinalized(int layer);
91cdf0e10cSrcweir 
92cdf0e10cSrcweir     int getFinalized() const;
93cdf0e10cSrcweir 
94cdf0e10cSrcweir     rtl::Reference< Node > getMember(rtl::OUString const & name);
95cdf0e10cSrcweir 
96cdf0e10cSrcweir protected:
97cdf0e10cSrcweir     explicit Node(int layer);
98cdf0e10cSrcweir 
99cdf0e10cSrcweir     Node(const Node & other);
100cdf0e10cSrcweir 
101cdf0e10cSrcweir     virtual ~Node();
102cdf0e10cSrcweir 
103cdf0e10cSrcweir     virtual void clear();
104cdf0e10cSrcweir 
105cdf0e10cSrcweir     int layer_;
106cdf0e10cSrcweir     int finalized_;
107cdf0e10cSrcweir };
108cdf0e10cSrcweir 
109cdf0e10cSrcweir }
110cdf0e10cSrcweir 
111cdf0e10cSrcweir #endif
112*06db55caSmseidel 
113*06db55caSmseidel /* vim: set noet sw=4 ts=4: */
114