You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
137 lines
3.5 KiB
137 lines
3.5 KiB
/******************************************************************************
|
|
|
|
Copyright (c) 1999 Microsoft Corporation
|
|
|
|
Module Name:
|
|
WMIParser_InstanceNameItem.cpp
|
|
|
|
Abstract:
|
|
This file contains the implementation of the WMIParser::InstanceNameItem class,
|
|
which is used to hold the data of a key inside a CIM schema.
|
|
|
|
Revision History:
|
|
Davide Massarenti (Dmassare) 10/03/99
|
|
created
|
|
|
|
******************************************************************************/
|
|
|
|
#include "stdafx.h"
|
|
|
|
|
|
WMIParser::InstanceNameItem::InstanceNameItem()
|
|
{
|
|
__HCP_FUNC_ENTRY( "WMIParser::InstanceNameItem::InstanceNameItem" );
|
|
|
|
// MPC::wstring m_szValue;
|
|
m_wmipvrValue = NULL; // ValueReference* m_wmipvrValue;
|
|
}
|
|
|
|
WMIParser::InstanceNameItem::InstanceNameItem( /*[in]*/ const InstanceNameItem& wmipini )
|
|
{
|
|
__HCP_FUNC_ENTRY( "WMIParser::InstanceNameItem::InstanceNameItem" );
|
|
|
|
m_szValue = wmipini.m_szValue; // MPC::wstring m_szValue;
|
|
m_wmipvrValue = wmipini.m_wmipvrValue; // ValueReference* m_wmipvrValue;
|
|
|
|
//
|
|
// The copy constructor actually transfers ownership of the ValueReference object!!!
|
|
//
|
|
InstanceNameItem* wmipini2 = const_cast<InstanceNameItem*>(&wmipini);
|
|
wmipini2->m_wmipvrValue = NULL;
|
|
}
|
|
|
|
WMIParser::InstanceNameItem::~InstanceNameItem()
|
|
{
|
|
__HCP_FUNC_ENTRY( "WMIParser::InstanceNameItem::~InstanceNameItem" );
|
|
|
|
delete m_wmipvrValue; m_wmipvrValue = NULL;
|
|
}
|
|
|
|
WMIParser::InstanceNameItem& WMIParser::InstanceNameItem::operator=( /*[in]*/ const InstanceNameItem& wmipini )
|
|
{
|
|
__HCP_FUNC_ENTRY( "WMIParser::InstanceNameItem::InstanceNameItem" );
|
|
|
|
if(m_wmipvrValue)
|
|
{
|
|
delete m_wmipvrValue;
|
|
}
|
|
|
|
m_szValue = wmipini.m_szValue; // MPC::wstring m_szValue;
|
|
m_wmipvrValue = wmipini.m_wmipvrValue; // ValueReference* m_wmipvrValue;
|
|
|
|
//
|
|
// The assignment actually transfers ownership of the ValueReference object!!!
|
|
//
|
|
InstanceNameItem* wmipini2 = const_cast<InstanceNameItem*>(&wmipini);
|
|
wmipini2->m_wmipvrValue = NULL;
|
|
|
|
return *this;
|
|
}
|
|
|
|
|
|
bool WMIParser::InstanceNameItem::operator==( /*[in]*/ InstanceNameItem const &wmipini ) const
|
|
{
|
|
__HCP_FUNC_ENTRY( "WMIParser::InstanceNameItem::operator==" );
|
|
|
|
MPC::NocaseCompare cmp;
|
|
bool fRes = false;
|
|
|
|
|
|
if(cmp( m_szValue, wmipini.m_szValue ) == true)
|
|
{
|
|
bool leftBinary = ( m_wmipvrValue != NULL);
|
|
bool rightBinary = (wmipini.m_wmipvrValue != NULL);
|
|
|
|
|
|
// If the two values are of the same kind of data, then they are comparable.
|
|
if(leftBinary == rightBinary)
|
|
{
|
|
if(leftBinary)
|
|
{
|
|
fRes = ((*m_wmipvrValue) == (*wmipini.m_wmipvrValue));
|
|
}
|
|
else
|
|
{
|
|
fRes = true;
|
|
}
|
|
}
|
|
}
|
|
|
|
__HCP_FUNC_EXIT(fRes);
|
|
}
|
|
|
|
bool WMIParser::InstanceNameItem::operator<( /*[in]*/ InstanceNameItem const &wmipini ) const
|
|
{
|
|
__HCP_FUNC_ENTRY( "WMIParser::InstanceNameItem::operator<" );
|
|
|
|
MPC::NocaseLess less;
|
|
bool fRes = false;
|
|
|
|
|
|
if(less( m_szValue, wmipini.m_szValue ) == true)
|
|
{
|
|
fRes = true;
|
|
}
|
|
else if(less( wmipini.m_szValue, m_szValue ) == false) // It means that the two szValue are the same...
|
|
{
|
|
bool leftBinary = ( m_wmipvrValue != NULL);
|
|
bool rightBinary = (wmipini.m_wmipvrValue != NULL);
|
|
|
|
|
|
if(leftBinary != rightBinary)
|
|
{
|
|
// Different kind of data, assume that NULL is less NOT NULL
|
|
|
|
fRes = rightBinary;
|
|
}
|
|
else
|
|
{
|
|
if(leftBinary)
|
|
{
|
|
fRes = (*m_wmipvrValue) < (*wmipini.m_wmipvrValue);
|
|
}
|
|
}
|
|
}
|
|
|
|
__HCP_FUNC_EXIT(fRes);
|
|
}
|