Leaked source code of windows server 2003
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.
 
 
 
 
 
 

249 lines
4.1 KiB

/*++
© 1998 Seagate Software, Inc. All rights reserved
Module Name:
wsbcltbl.cpp
Abstract:
Abstract classes that provide methods that allow the derived objects to
be stored in collections.
Author:
Chuck Bardeen [cbardeen] 29-Oct-1996
Revision History:
--*/
#include "stdafx.h"
HRESULT
CWsbObject::FinalConstruct(
void
)
/*++
Implements:
CComObjectRoot::FinalConstruct().
--*/
{
return(CWsbPersistStream::FinalConstruct());
}
void
CWsbObject::FinalRelease(
void
)
/*++
Implements:
CComObjectRoot::FinalRelease().
--*/
{
CWsbPersistStream::FinalRelease();
}
HRESULT
CWsbObject::CompareTo(
IN IUnknown* pObject,
OUT SHORT* pResult
)
/*++
Implements:
IWsbCollectable::Compare().
--*/
{
HRESULT hr = S_OK;
SHORT result = 0;
CComPtr<IWsbCollectable> pCollectable;
WsbTraceIn(OLESTR("CWsbObject::CompareTo"), OLESTR(""));
try {
// Did they give us a valid item to compare to?
WsbAssert(pObject != NULL, E_POINTER);
WsbAffirmHr(pObject->QueryInterface(IID_IWsbCollectable,
(void **)&pCollectable));
// Check it's values.
if (pCollectable == ((IWsbCollectable*) this)) {
hr = S_OK;
result = 0;
} else {
hr = S_FALSE;
result = 1;
}
// If they want the value back, then return it to them.
if (0 != pResult) {
*pResult = result;
}
} WsbCatch(hr);
WsbTraceOut(OLESTR("CWsbObject::CompareTo"), OLESTR("hr = <%ls>, value = <%d>"), WsbHrAsString(hr), result);
return(hr);
}
HRESULT
CWsbObject::IsEqual(
IUnknown* pObject
)
/*++
Implements:
IWsbCollectable::IsEqual().
--*/
{
HRESULT hr = S_OK;
WsbTraceIn(OLESTR("CWsbObject::IsEqual"), OLESTR(""));
hr = CompareTo(pObject, NULL);
WsbTraceOut(OLESTR("CWsbObject::IsEqual"), OLESTR("hr = <%ls>"), WsbHrAsString(hr));
return(hr);
}
// ************* CWsbCollectable ************
HRESULT
CWsbCollectable::FinalConstruct(
void
)
/*++
Implements:
CComObjectRoot::FinalConstruct().
--*/
{
return(CWsbPersistable::FinalConstruct());
}
void
CWsbCollectable::FinalRelease(
void
)
/*++
Implements:
CComObjectRoot::FinalRelease().
--*/
{
CWsbPersistable::FinalRelease();
}
HRESULT
CWsbCollectable::CompareTo(
IN IUnknown* pObject,
OUT SHORT* pResult
)
/*++
Implements:
IWsbCollectable::Compare().
--*/
{
HRESULT hr = S_OK;
SHORT result = 0;
CComPtr<IWsbCollectable> pCollectable;
WsbTraceIn(OLESTR("CWsbCollectable::CompareTo"), OLESTR(""));
try {
// Did they give us a valid item to compare to?
WsbAssert(pObject != NULL, E_POINTER);
WsbAffirmHr(pObject->QueryInterface(IID_IWsbCollectable,
(void **)&pCollectable));
// Check it's values.
if (pCollectable == ((IWsbCollectable*) this)) {
hr = S_OK;
result = 0;
} else {
hr = S_FALSE;
// if (pCollectable > ((IWsbCollectable*) this)) {
// result = -1;
// } else {
result = 1;
// }
}
// If they want the value back, then return it to them.
if (0 != pResult) {
*pResult = result;
}
} WsbCatch(hr);
WsbTraceOut(OLESTR("CWsbCollectable::CompareTo"), OLESTR("hr = <%ls>, value = <%d>"), WsbHrAsString(hr), result);
return(hr);
}
HRESULT
CWsbCollectable::IsEqual(
IUnknown* pCollectable
)
/*++
Implements:
IWsbCollectable::IsEqual().
--*/
{
HRESULT hr = S_OK;
WsbTraceIn(OLESTR("CWsbCollectable::IsEqual"), OLESTR(""));
hr = CompareTo(pCollectable, NULL);
WsbTraceOut(OLESTR("CWsbCollectable::IsEqual"), OLESTR("hr = <%ls>"), WsbHrAsString(hr));
return(hr);
}