version 1.62, 2007/10/17 20:50:44
|
version 1.63, 2007/11/11 19:48:34
|
|
|
#include <Pegasus/Common/MessageLoader.h> | #include <Pegasus/Common/MessageLoader.h> |
#include "StrLit.h" | #include "StrLit.h" |
#include "ArrayIterator.h" | #include "ArrayIterator.h" |
|
#include "CIMQualifierRep.h" |
| |
PEGASUS_NAMESPACE_BEGIN | PEGASUS_NAMESPACE_BEGIN |
PEGASUS_USING_STD; | PEGASUS_USING_STD; |
| |
CIMQualifierList::CIMQualifierList() |
static CIMName _KEY("Key"); |
|
|
|
CIMQualifierList::CIMQualifierList() : |
|
_keyIndex(PEGASUS_ORDEREDSET_INDEX_UNKNOWN) |
{ | { |
| |
} | } |
|
|
| |
_qualifiers.append(qualifier); | _qualifiers.append(qualifier); |
| |
|
// Update key index: |
|
if (_keyIndex == PEGASUS_ORDEREDSET_INDEX_UNKNOWN && |
|
qualifier._rep->_name == _KEY) |
|
_keyIndex = _qualifiers.size()-1; |
|
|
return *this; | return *this; |
} | } |
| |
|
|
void CIMQualifierList::removeQualifier(Uint32 index) | void CIMQualifierList::removeQualifier(Uint32 index) |
{ | { |
_qualifiers.remove(index); | _qualifiers.remove(index); |
|
_keyIndex = PEGASUS_ORDEREDSET_INDEX_UNKNOWN; |
} | } |
| |
void CIMQualifierList::clear() | void CIMQualifierList::clear() |
|
|
| |
Uint32 CIMQualifierList::find(const CIMName& name) const | Uint32 CIMQualifierList::find(const CIMName& name) const |
{ | { |
ConstArrayIterator<CIMQualifier> qualifiers(_qualifiers); |
return _qualifiers.find(name, generateCIMNameTag(name)); |
|
|
for (Uint32 i = 0, n = qualifiers.size(); i < n; i++) |
|
{ |
|
if (name.equal(qualifiers[i].getName())) |
|
return i; |
|
} | } |
| |
return PEG_NOT_FOUND; |
|
} |
|
Boolean CIMQualifierList::isTrue(const CIMName& name) const | Boolean CIMQualifierList::isTrue(const CIMName& name) const |
{ | { |
Uint32 index = find(name); | Uint32 index = find(name); |
|
|
CIMQualifierList& inheritedQualifiers, | CIMQualifierList& inheritedQualifiers, |
Boolean propagateQualifiers) // Apparently not used ks 24 mar 2002 | Boolean propagateQualifiers) // Apparently not used ks 24 mar 2002 |
{ | { |
|
_keyIndex = PEGASUS_ORDEREDSET_INDEX_UNKNOWN; |
|
|
PEG_METHOD_ENTER(TRC_OBJECTRESOLUTION, "CIMQualifierList::resolve()"); | PEG_METHOD_ENTER(TRC_OBJECTRESOLUTION, "CIMQualifierList::resolve()"); |
// For each qualifier in the qualifiers array, the following | // For each qualifier in the qualifiers array, the following |
// is checked: | // is checked: |
|
|
| |
CIMQualifier q = iq.clone(); | CIMQualifier q = iq.clone(); |
q.setPropagated(true); | q.setPropagated(true); |
_qualifiers.prepend(q); |
_qualifiers.insert(0, q); |
} | } |
PEG_METHOD_EXIT(); | PEG_METHOD_EXIT(); |
} | } |
|
|
| |
void CIMQualifierList::cloneTo(CIMQualifierList& x) const | void CIMQualifierList::cloneTo(CIMQualifierList& x) const |
{ | { |
|
x._keyIndex = PEGASUS_ORDEREDSET_INDEX_UNKNOWN; |
x._qualifiers.clear(); | x._qualifiers.clear(); |
x._qualifiers.reserveCapacity(_qualifiers.size()); | x._qualifiers.reserveCapacity(_qualifiers.size()); |
| |
for (Uint32 i = 0, n = _qualifiers.size(); i < n; i++) | for (Uint32 i = 0, n = _qualifiers.size(); i < n; i++) |
x._qualifiers.append(_qualifiers[i].clone()); | x._qualifiers.append(_qualifiers[i].clone()); |
|
x._keyIndex = _keyIndex; |
|
} |
|
|
|
Boolean CIMQualifierList::isKey() const |
|
{ |
|
static Uint32 _KEY_TAG = generateCIMNameTag(_KEY); |
|
|
|
// Resolve key index if unresolved. |
|
|
|
if (_keyIndex == PEGASUS_ORDEREDSET_INDEX_UNKNOWN) |
|
{ |
|
Uint32 pos = _qualifiers.find(_KEY, _KEY_TAG); |
|
((CIMQualifierList*)this)->_keyIndex = int(pos); |
|
} |
|
|
|
// If no key qualifier in list, then return false (default key value). |
|
|
|
if (_keyIndex == PEGASUS_ORDEREDSET_INDEX_NOTFOUND) |
|
return false; |
|
|
|
// Obtain value of key qualifier. |
|
|
|
const CIMValue& value = _qualifiers[_keyIndex]._rep->_value; |
|
if (!value.isNull() && |
|
value.getType() == CIMTYPE_BOOLEAN) |
|
{ |
|
Boolean boolVal; |
|
value.get(boolVal); |
|
return boolVal; |
|
} |
|
|
|
return false; |
} | } |
| |
PEGASUS_NAMESPACE_END | PEGASUS_NAMESPACE_END |