xref: /AOO41X/main/configmgr/source/node.hxx (revision e7e4a7599a84142ba8748550cf6a39cbb0dd1e6f)
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 
22a2faadffSAndrew Rist 
23cdf0e10cSrcweir 
24cdf0e10cSrcweir #ifndef INCLUDED_CONFIGMGR_SOURCE_NODE_HXX
25cdf0e10cSrcweir #define INCLUDED_CONFIGMGR_SOURCE_NODE_HXX
26cdf0e10cSrcweir 
27cdf0e10cSrcweir #include "sal/config.h"
28cdf0e10cSrcweir 
29cdf0e10cSrcweir #include "rtl/ref.hxx"
30cdf0e10cSrcweir #include "salhelper/simplereferenceobject.hxx"
31cdf0e10cSrcweir 
32cdf0e10cSrcweir #include "nodemap.hxx"
33cdf0e10cSrcweir 
34cdf0e10cSrcweir namespace rtl { class OUString; }
35cdf0e10cSrcweir 
36cdf0e10cSrcweir namespace configmgr {
37cdf0e10cSrcweir 
386edfcaa1SArrigo Marchiori /**
396edfcaa1SArrigo Marchiori  * Configuration element.
406edfcaa1SArrigo Marchiori  *
416edfcaa1SArrigo Marchiori  * This class represent either a "node" or a "property" in the words of the
426edfcaa1SArrigo Marchiori  * OpenOffice.org Registry Format (OOR).
436edfcaa1SArrigo Marchiori  */
44cdf0e10cSrcweir class Node: public salhelper::SimpleReferenceObject {
45cdf0e10cSrcweir public:
466edfcaa1SArrigo Marchiori     /// Identifies the type of configuration element.
47cdf0e10cSrcweir     enum Kind {
486edfcaa1SArrigo Marchiori         /** Property (<prop> element)
496edfcaa1SArrigo Marchiori          *
506edfcaa1SArrigo Marchiori          * Identifies instances of PropertyNode.
516edfcaa1SArrigo Marchiori          */
526edfcaa1SArrigo Marchiori         KIND_PROPERTY,
536edfcaa1SArrigo Marchiori         /** Localized property (<prop> element)
546edfcaa1SArrigo Marchiori          *
556edfcaa1SArrigo Marchiori          * Identifies instances of LocalizedPropertyNode.
566edfcaa1SArrigo Marchiori          */
576edfcaa1SArrigo Marchiori         KIND_LOCALIZED_PROPERTY,
586edfcaa1SArrigo Marchiori         /**
596edfcaa1SArrigo Marchiori          * Value of a property (<value> element)
606edfcaa1SArrigo Marchiori          *
616edfcaa1SArrigo Marchiori          * Identifies instances of LocalizedValueNode.
626edfcaa1SArrigo Marchiori          */
636edfcaa1SArrigo Marchiori         KIND_LOCALIZED_VALUE,
64*e7e4a759SArrigo Marchiori         /** Group member node (<node> element)
656edfcaa1SArrigo Marchiori          *
666edfcaa1SArrigo Marchiori          * Identifies instances of GroupNode.
676edfcaa1SArrigo Marchiori          */
686edfcaa1SArrigo Marchiori         KIND_GROUP,
69*e7e4a759SArrigo Marchiori         /** Set member node (<node> element)
706edfcaa1SArrigo Marchiori          *
716edfcaa1SArrigo Marchiori          * Identifies instances of SetNode.
726edfcaa1SArrigo Marchiori          */
736edfcaa1SArrigo Marchiori         KIND_SET,
74*e7e4a759SArrigo Marchiori     };
75cdf0e10cSrcweir 
76cdf0e10cSrcweir     virtual Kind kind() const = 0;
77cdf0e10cSrcweir 
78cdf0e10cSrcweir     virtual rtl::Reference< Node > clone(bool keepTemplateName) const = 0;
79cdf0e10cSrcweir 
80cdf0e10cSrcweir     virtual NodeMap & getMembers();
81cdf0e10cSrcweir 
82cdf0e10cSrcweir     virtual rtl::OUString getTemplateName() const;
83cdf0e10cSrcweir 
84cdf0e10cSrcweir     virtual void setMandatory(int layer);
85cdf0e10cSrcweir 
86cdf0e10cSrcweir     virtual int getMandatory() const;
87cdf0e10cSrcweir 
88cdf0e10cSrcweir     void setLayer(int layer);
89cdf0e10cSrcweir 
90cdf0e10cSrcweir     int getLayer() const;
91cdf0e10cSrcweir 
92cdf0e10cSrcweir     void setFinalized(int layer);
93cdf0e10cSrcweir 
94cdf0e10cSrcweir     int getFinalized() const;
95cdf0e10cSrcweir 
96cdf0e10cSrcweir     rtl::Reference< Node > getMember(rtl::OUString const & name);
97cdf0e10cSrcweir 
98cdf0e10cSrcweir protected:
99cdf0e10cSrcweir     explicit Node(int layer);
100cdf0e10cSrcweir 
101cdf0e10cSrcweir     Node(const Node & other);
102cdf0e10cSrcweir 
103cdf0e10cSrcweir     virtual ~Node();
104cdf0e10cSrcweir 
105cdf0e10cSrcweir     virtual void clear();
106cdf0e10cSrcweir 
107cdf0e10cSrcweir     int layer_;
108cdf0e10cSrcweir     int finalized_;
109cdf0e10cSrcweir };
110cdf0e10cSrcweir 
111cdf0e10cSrcweir }
112cdf0e10cSrcweir 
113cdf0e10cSrcweir #endif
114