version 1.11, 2001/06/16 23:09:59
|
version 1.25, 2002/06/10 20:33:49
|
|
|
//%///////////////////////////////////////////////////////////////////////////// | //%///////////////////////////////////////////////////////////////////////////// |
// | // |
// Copyright (c) 2000, 2001 The Open group, BMC Software, Tivoli Systems, IBM |
// Copyright (c) 2000, 2001, 2002 BMC Software, Hewlett-Packard Company, IBM, |
|
// The Open Group, Tivoli Systems |
// | // |
// Permission is hereby granted, free of charge, to any person obtaining a copy | // Permission is hereby granted, free of charge, to any person obtaining a copy |
// of this software and associated documentation files (the "Software"), to | // of this software and associated documentation files (the "Software"), to |
|
|
// | // |
//%///////////////////////////////////////////////////////////////////////////// | //%///////////////////////////////////////////////////////////////////////////// |
| |
#include <cassert> |
#include <Pegasus/Common/Config.h> |
#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" |
#include "XmlWriter.h" | #include "XmlWriter.h" |
|
#include "MofWriter.h" |
| |
PEGASUS_NAMESPACE_BEGIN | PEGASUS_NAMESPACE_BEGIN |
| |
|
|
| |
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); |
PEGASUS_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 |
|
|
nameSpace, | nameSpace, |
CIMScope::METHOD, | CIMScope::METHOD, |
false, | false, |
inheritedMethod._rep->_qualifiers); |
inheritedMethod._rep->_qualifiers, |
|
true); |
| |
// Validate each of the parameters: | // Validate each of the parameters: |
| |
|
|
nameSpace, | nameSpace, |
CIMScope::METHOD, | CIMScope::METHOD, |
false, | false, |
dummy); |
dummy, |
|
true); |
| |
// Validate each of the parameters: | // Validate each of the parameters: |
| |
|
|
| |
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 |
/** |
|
The BNF for this is; |
|
methodDeclaration = [ qualifierList ] dataType methodName |
|
"(" [ parameterList ] ")" ";" |
|
|
|
parameterList = parameter *( "," parameter ) |
|
Format with qualifiers on one line and declaration on another. Start |
|
with newline but none at the end. |
|
*/ |
|
void CIMMethodRep::toMof(Array<Sint8>& out) const //ATTNKS: |
|
{ |
|
// Output the qualifier list starting on new line |
|
if (_qualifiers.getCount()) |
|
out << "\n"; |
|
|
|
_qualifiers.toMof(out); |
|
|
|
// output the type, MethodName and ParmeterList left enclosure |
|
out << "\n" << _type.toString() << " " << _name << "("; |
|
|
|
// output the param list separated by commas. |
|
|
|
for (Uint32 i = 0, n = _parameters.size(); i < n; i++) |
{ | { |
Array<Sint8> tmp; |
// If not first, output comma separator |
toXml(tmp); |
if (i) |
tmp.append('\0'); |
out << ", "; |
os << tmp.getData() << PEGASUS_STD(endl); |
|
|
MofWriter::appendParameterElement(out, _parameters[i]); |
} | } |
| |
|
// output the parameterlist and method terminator |
|
out << ");"; |
|
} |
|
|
|
|
CIMMethodRep::CIMMethodRep() | CIMMethodRep::CIMMethodRep() |
{ | { |
| |
|
|
_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) |