(file) Return to CIMQualifierDeclRep.cpp CVS log (file) (dir) Up to [Pegasus] / pegasus / src / Pegasus / Common

  1 mike  1.10 //%/////////////////////////////////////////////////////////////////////////////
  2            //
  3            // Copyright (c) 2000, 2001 The Open group, BMC Software, Tivoli Systems, IBM
  4            //
  5            // Permission is hereby granted, free of charge, to any person obtaining a copy
  6 mike  1.11 // of this software and associated documentation files (the "Software"), to
  7            // deal in the Software without restriction, including without limitation the
  8            // rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
  9 mike  1.10 // sell copies of the Software, and to permit persons to whom the Software is
 10            // furnished to do so, subject to the following conditions:
 11 mike  1.11 //
 12            // THE ABOVE COPYRIGHT NOTICE AND THIS PERMISSION NOTICE SHALL BE INCLUDED IN
 13 mike  1.10 // ALL COPIES OR SUBSTANTIAL PORTIONS OF THE SOFTWARE. THE SOFTWARE IS PROVIDED
 14            // "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT
 15 mike  1.11 // LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
 16            // PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
 17            // HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
 18 mike  1.10 // ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
 19            // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 20            //
 21            //==============================================================================
 22            //
 23            // Author: Mike Brasher (mbrasher@bmc.com)
 24            //
 25            // Modified By:
 26            //
 27            //%/////////////////////////////////////////////////////////////////////////////
 28            
 29            #include <cstdio>
 30            #include "CIMQualifierDecl.h"
 31            #include "Indentor.h"
 32            #include "DeclContext.h"
 33            #include "CIMName.h"
 34            #include "Exception.h"
 35            #include "XmlWriter.h"
 36            
 37            PEGASUS_NAMESPACE_BEGIN
 38 karl  1.15 PEGASUS_USING_STD;
 39 mike  1.10 ////////////////////////////////////////////////////////////////////////////////
 40            //
 41            // CIMQualifierDeclRep
 42            //
 43            ////////////////////////////////////////////////////////////////////////////////
 44            
 45            CIMQualifierDeclRep::CIMQualifierDeclRep(
 46 mike  1.11     const String& name,
 47                const CIMValue& value,
 48 mike  1.10     Uint32 scope,
 49                Uint32 flavor,
 50                Uint32 arraySize)
 51 mike  1.11     :
 52                _name(name),
 53                _value(value),
 54 mike  1.10     _scope(scope),
 55                _flavor(flavor),
 56                _arraySize(arraySize)
 57            {
 58 karl  1.15     //cout << "KSTEST Qualifier Declflavor " << flavor << endl;
 59 mike  1.10     if (!CIMName::legal(name))
 60            	throw IllegalName();
 61            
 62                if (_value.getType() == CIMType::NONE)
 63            	throw NullType();
 64            }
 65            
 66            CIMQualifierDeclRep::~CIMQualifierDeclRep()
 67            {
 68            
 69            }
 70            
 71 mike  1.11 void CIMQualifierDeclRep::setName(const String& name)
 72 mike  1.10 {
 73                if (!CIMName::legal(name))
 74            	throw IllegalName();
 75            
 76 mike  1.11     _name = name;
 77 mike  1.10 }
 78            
 79            static const char* _toString(Boolean x)
 80            {
 81                return x ? "true" : "false";
 82            }
 83            
 84            void CIMQualifierDeclRep::toXml(Array<Sint8>& out) const
 85            {
 86                out << "<QUALIFIER.DECLARATION";
 87                out << " NAME=\"" << _name << "\"";
 88                out << " TYPE=\"" << TypeToString(_value.getType()) << "\"";
 89            
 90                if (_value.isArray())
 91                {
 92            	out << " ISARRAY=\"true\"";
 93            
 94            	if (_arraySize)
 95            	{
 96            	    char buffer[64];
 97            	    sprintf(buffer, " ARRAYSIZE=\"%d\"", _arraySize);
 98 mike  1.10 	    out << buffer;
 99            	}
100                }
101            
102                FlavorToXml(out, _flavor);
103            
104                out << ">\n";
105            
106                ScopeToXml(out, _scope);
107 karl  1.14     /*KSTESTNULL - Put the XML out with no VALUE tags if Null*/
108                _value.toXml(out, false);
109 mike  1.10 
110                out << "</QUALIFIER.DECLARATION>\n";
111            }
112            
113 mike  1.11 /** toMof - Generate the MOF output for the Qualifier Declaration object.
114 karl  1.12     
115 mike  1.11     The BNF for this output is:
116 karl  1.12     <pre>
117 mike  1.11     qualifierDeclaration   = 	QUALIFIER qualifierName qualifierType scope
118            				[ defaultFlavor ] ";"
119            
120                qualifierName 	   = 	IDENTIFIER
121            
122                qualifierType 	   = 	":" dataType [ array ] [ defaultValue ]
123            
124                scope 		   = 	"," SCOPE "(" metaElement *( "," metaElement )
125                ")"
126 karl  1.12     </pre>
127 mike  1.11 */
128            void CIMQualifierDeclRep::toMof(Array<Sint8>& out) const
129            {
130                out << "\n";
131            
132                // output the "Qualifier" keyword and name
133                out << "Qualfier " << _name;
134            
135                // output the qualifiertype
136                out << " : " << TypeToString(_value.getType());
137            
138                // If array put the Array indicator "[]" and possible size after name.
139                if (_value.isArray())
140                {
141            	if (_arraySize)
142            	{
143            	    char buffer[32];
144            	    sprintf(buffer, "[%d]", _arraySize);
145            	    out << buffer;
146            	}
147            	else
148 mike  1.11 	    out << "[]";
149                }
150            
151                Boolean hasValueField = false;
152 karl  1.12     // KS think through the following test
153                //if (!_value.isNull() || !(_value.getType() == CIMType::BOOLEAN) )
154                //{
155                    // KS With CIM Qualifier, this should be =
156 karl  1.13 	out << " = ";
157 mike  1.11 	hasValueField = true;
158            	_value.toMof(out);
159 karl  1.12     //}
160 mike  1.11 
161 karl  1.12     // Output Scope Information
162 mike  1.11     String scopeString;
163 karl  1.13     scopeString = ScopeToMofString(_scope);
164 karl  1.12     //if (scopeString.size())
165                //{
166            	out << ", Scope(" << scopeString << ")";
167                //}
168                // Output Flavor Information
169 mike  1.11     String flavorString;
170                flavorString = FlavorToMof(_flavor);
171                if (flavorString.size())
172                {
173 karl  1.12     out << ", Flavor(" << flavorString << ")";
174 mike  1.11     }
175 karl  1.12     // End each qualifier declaration with newline
176 mike  1.11     out << ";\n";
177            }
178            
179            
180 mike  1.10 void CIMQualifierDeclRep::print(PEGASUS_STD(ostream) &os) const
181            {
182                Array<Sint8> tmp;
183                toXml(tmp);
184                tmp.append('\0');
185 mike  1.11     // ATTN:KS 7 Aug 2001 I think the endl should be removed here.
186 mike  1.10     os << tmp.getData() << PEGASUS_STD(endl);
187            }
188            
189            CIMQualifierDeclRep::CIMQualifierDeclRep()
190            {
191            
192            }
193            
194 mike  1.11 CIMQualifierDeclRep::CIMQualifierDeclRep(const CIMQualifierDeclRep& x) :
195 mike  1.10     Sharable(),
196                _name(x._name),
197                _value(x._value),
198                _scope(x._scope),
199                _flavor(x._flavor),
200                _arraySize(x._arraySize)
201            {
202            
203            }
204            
205 mike  1.11 CIMQualifierDeclRep& CIMQualifierDeclRep::operator=(const CIMQualifierDeclRep&
206            x)
207            {
208                return *this;
209 mike  1.10 }
210            
211            Boolean CIMQualifierDeclRep::identical(const CIMQualifierDeclRep* x) const
212            {
213                return
214            	this == x ||
215 mike  1.11 	CIMName::equal(_name, x->_name) &&
216            	_value == x->_value &&
217 mike  1.10 	_scope == x->_scope &&
218            	_flavor == x->_flavor &&
219            	_arraySize == x->_arraySize;
220            }
221            
222 mike  1.11 void CIMQualifierDeclRep::setValue(const CIMValue& value)
223 mike  1.10 {
224 mike  1.11     _value = value;
225 mike  1.10 
226                if (_value.getType() == CIMType::NONE)
227            	throw NullType();
228            }
229            
230            PEGASUS_NAMESPACE_END
231 mike  1.11 

No CVS admin address has been configured
Powered by
ViewCVS 0.9.2