1 mike 1.1 //BEGIN_LICENSE
2 //
3 // Copyright (c) 2000 The Open Group, BMC Software, Tivoli Systems, IBM
4 //
5 // Permission is hereby granted, free of charge, to any person obtaining a
6 // copy of this software and associated documentation files (the "Software"),
7 // to deal in the Software without restriction, including without limitation
8 // the rights to use, copy, modify, merge, publish, distribute, sublicense,
9 // and/or sell copies of the Software, and to permit persons to whom the
10 // Software is furnished to do so, subject to the following conditions:
11 //
12 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
13 // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
14 // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
15 // THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
16 // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
17 // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
18 // DEALINGS IN THE SOFTWARE.
19 //
20 //END_LICENSE
21 //BEGIN_HISTORY
22 mike 1.1 //
23 // Author:
24 //
25 // $Log$
26 //
27 //END_HISTORY
28
29 #ifndef Pegasus_QualifierDeclRep_h
30 #define Pegasus_QualifierDeclRep_h
31
32 #include <Pegasus/Common/Config.h>
33 #include <Pegasus/Common/String.h>
34 #include <Pegasus/Common/Value.h>
35 #include <Pegasus/Common/Sharable.h>
36 #include <Pegasus/Common/Array.h>
37 #include <Pegasus/Common/Pair.h>
38 #include <Pegasus/Common/Sharable.h>
39 #include <Pegasus/Common/Exception.h>
40 #include <Pegasus/Common/Flavor.h>
41 #include <Pegasus/Common/Scope.h>
42
43 mike 1.1 PEGASUS_NAMESPACE_BEGIN
44
45 class ConstQualifierDecl;
46 class QualifierDecl;
47
48 class PEGASUS_COMMON_LINKAGE QualifierDeclRep : public Sharable
49 {
50 public:
51
52 QualifierDeclRep(
53 const String& name,
54 const Value& value,
55 Uint32 scope,
56 Uint32 flavor,
57 Uint32 arraySize);
58
59 virtual ~QualifierDeclRep();
60
61 const String& getName() const
62 {
63 return _name;
64 mike 1.1 }
65
66 void setName(const String& name);
67
68 Type getType() const
69 {
70 return _value.getType();
71 }
72
73 const Value& getValue() const
74 {
75 return _value;
76 }
77
78 void setValue(const Value& value)
79 {
80 _value = value;
81
82 if (_value.getType() == Type::NONE)
83 throw NullType();
84 }
85 mike 1.1
86 Uint32 getScope() const
87 {
88 return _scope;
89 }
90
91 Uint32 getFlavor() const
92 {
93 return _flavor;
94 }
95
96 Uint32 getArraySize() const
97 {
98 return _arraySize;
99 }
100
101 void toXml(Array<Sint8>& out) const;
102
103 void print() const;
104
105 Boolean identical(const QualifierDeclRep* x) const;
106 mike 1.1
107 QualifierDeclRep* clone() const
108 {
109 return new QualifierDeclRep(*this);
110 }
111
112 private:
113
114 QualifierDeclRep();
115
116 QualifierDeclRep(const QualifierDeclRep& x);
117
118 QualifierDeclRep& operator=(const QualifierDeclRep& x);
119
120 String _name;
121 Value _value;
122 Uint32 _scope;
123 Uint32 _flavor;
124 Uint32 _arraySize;
125 };
126
127 mike 1.1 PEGASUS_NAMESPACE_END
128
129 #endif /* Pegasus_QualifierDeclRep_h */
|