250 lines
3.9 KiB
C++
250 lines
3.9 KiB
C++
/*++
|
||
|
||
© 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);
|
||
}
|