version 1.16, 2002/03/22 00:48:56
|
version 1.22, 2002/05/15 10:34:28
|
|
|
#include <Pegasus/Common/Config.h> | #include <Pegasus/Common/Config.h> |
#include <cassert> | #include <cassert> |
#include "CIMMethod.h" | #include "CIMMethod.h" |
|
#include "CIMMethodRep.h" |
#include "Indentor.h" | #include "Indentor.h" |
#include "CIMName.h" | #include "CIMName.h" |
#include "CIMScope.h" | #include "CIMScope.h" |
|
|
| |
void CIMMethodRep::addParameter(const CIMParameter& x) | void CIMMethodRep::addParameter(const CIMParameter& x) |
{ | { |
if (!x) |
if (x.isNull()) |
throw UnitializedHandle(); |
throw UninitializedHandle(); |
| |
if (findParameter(x.getName()) != PEG_NOT_FOUND) | if (findParameter(x.getName()) != PEG_NOT_FOUND) |
throw AlreadyExists(); | throw AlreadyExists(); |
|
|
_parameters.append(x); | _parameters.append(x); |
} | } |
| |
Uint32 CIMMethodRep::findParameter(const String& name) |
Uint32 CIMMethodRep::findParameter(const String& name) const |
{ | { |
for (Uint32 i = 0, n = _parameters.size(); i < n; i++) | for (Uint32 i = 0, n = _parameters.size(); i < n; i++) |
{ | { |
|
|
| |
// Check for type mismatch between return types. | // Check for type mismatch between return types. |
| |
assert (inheritedMethod); |
assert (!inheritedMethod.isNull()); |
| |
// Validate the qualifiers of the method (according to | // Validate the qualifiers of the method (according to |
// superClass's method with the same name). This method | // superClass's method with the same name). This method |
|
|
| |
out << " NAME=\"" << _name << "\""; | out << " NAME=\"" << _name << "\""; |
| |
out << " TYPE=\"" << TypeToString(_type) << "\""; |
out << " TYPE=\"" << _type.toString() << "\""; |
| |
if (_classOrigin.size()) | if (_classOrigin.size()) |
out << " CLASSORIGIN=\"" << _classOrigin << "\""; | out << " CLASSORIGIN=\"" << _classOrigin << "\""; |
|
|
_qualifiers.toXml(out); | _qualifiers.toXml(out); |
| |
for (Uint32 i = 0, n = _parameters.size(); i < n; i++) | for (Uint32 i = 0, n = _parameters.size(); i < n; i++) |
_parameters[i].toXml(out); |
XmlWriter::appendParameterElement(out, _parameters[i]); |
| |
out << "</METHOD>\n"; | out << "</METHOD>\n"; |
} | } |
| |
void CIMMethodRep::print(PEGASUS_STD(ostream) &os) const |
|
{ |
|
Array<Sint8> tmp; |
|
toXml(tmp); |
|
tmp.append('\0'); |
|
os << tmp.getData() << PEGASUS_STD(endl); |
|
} |
|
|
|
/** | /** |
The BNF for this is; | The BNF for this is; |
methodDeclaration = [ qualifierList ] dataType methodName | methodDeclaration = [ qualifierList ] dataType methodName |
|
|
_qualifiers.toMof(out); | _qualifiers.toMof(out); |
| |
// output the type, MethodName and ParmeterList left enclosure | // output the type, MethodName and ParmeterList left enclosure |
out << "\n" << TypeToString(_type) << " " << _name << "("; |
out << "\n" << _type.toString() << " " << _name << "("; |
| |
// output the param list separated by commas. | // output the param list separated by commas. |
| |
|
|
_parameters.append(x._parameters[i].clone()); | _parameters.append(x._parameters[i].clone()); |
} | } |
| |
CIMMethodRep& CIMMethodRep::operator=(const CIMMethodRep& x) |
|
{ |
|
return *this; |
|
} |
|
|
|
Boolean CIMMethodRep::identical(const CIMMethodRep* x) const | Boolean CIMMethodRep::identical(const CIMMethodRep* x) const |
{ | { |
if (_name != x->_name) | if (_name != x->_name) |