Link to: header | other data directory
Copyright Turtle Creek Software 1996-2006. All Rights Reserved.
Comments
CCostIDComparator
CCostNameComparator
CCostItemNumComparator
This class compares unit cost names for the Goldenseal job cost accounting software,
project management software and construction project
estimating software.
Comparators are a convenient way to sort a struct array based on the value
in one of the members. These sort cost item name arrays by id, item number or name.
SUPERCLASS = CTCS_ArrayComparator
Source Code
/*****************************************************************************
CCostIDComparator Compare TCS 3/20/99
Compare two items by id
******************************************************************************/
SInt32 CCostIDComparator::Compare(const void *inItemOne, const void *inItemTwo,
UInt32 inSizeOne, UInt32 inSizeTwo) const
{
// We want to be sure we are being passed SCostNameInfo pointers
TCS_ASSERTMsg(inSizeOne == sizeof(SCostNameInfo) &&
inSizeTwo == sizeof(SCostNameInfo), TCS_GetErrString(errID_ProblemDataSize));
TCS_FailNILMsg(inItemOne, TCS_GetErrString(errID_BadComparator));
TCS_FailNILMsg(inItemTwo, TCS_GetErrString(errID_BadComparator));
// Get the structs
SCostNameInfo *structOne = ((SCostNameInfo *)inItemOne);
SCostNameInfo *structTwo = ((SCostNameInfo *)inItemTwo);
TCS_FailNILMsg(structOne, TCS_GetErrString(errID_BadComparator)); // TCS 12/2/02
TCS_FailNILMsg(structTwo, TCS_GetErrString(errID_BadComparator));
DBid firstID = structOne->id;
DBid secondID = structTwo->id;
// Compare the names
if (firstID < secondID)
{
return compare_Less;
}
else if (secondID == secondID)
{
return compare_Equal;
}
else
{
return compare_Greater;
}
}
/*****************************************************************************
CCostNameComparator Compare TCS 3/20/99
Compare two items by name
******************************************************************************/
SInt32 CCostNameComparator::Compare(const void *inItemOne, const void *inItemTwo,
UInt32 inSizeOne, UInt32 inSizeTwo) const
{
// We want to be sure we are being passed SCostNameInfo pointers
TCS_ASSERTMsg(inSizeOne == sizeof(SCostNameInfo) &&
inSizeTwo == sizeof(SCostNameInfo), TCS_GetErrString(errID_ProblemDataSize));
TCS_FailNILMsg(inItemOne, TCS_GetErrString(errID_BadComparator));
TCS_FailNILMsg(inItemTwo, TCS_GetErrString(errID_BadComparator));
// Get the structs
SCostNameInfo *structOne = ((SCostNameInfo *)inItemOne);
SCostNameInfo *structTwo = ((SCostNameInfo *)inItemTwo);
TCS_FailNILMsg(structOne, TCS_GetErrString(errID_BadComparator)); // TCS 12/2/02
TCS_FailNILMsg(structTwo, TCS_GetErrString(errID_BadComparator));
CTextString str1 = structOne->costName,
str2 = structTwo->costName;
// Compare the names
if (str1 < str2)
{
return compare_Less;
}
else if (str1 == str2)
{
return compare_Equal;
}
else
{
return compare_Greater;
}
}
/*****************************************************************************
Compare TCS 6/30/00
Compare two items by item number
******************************************************************************/
SInt32 CCostItemNumComparator::Compare(const void *inItemOne, const void *inItemTwo,
UInt32 inSizeOne, UInt32 inSizeTwo) const
{
// We want to be sure we are being passed SCostNameInfo pointers
TCS_ASSERTMsg(inSizeOne == sizeof(SCostNameInfo) &&
inSizeTwo == sizeof(SCostNameInfo), TCS_GetErrString(errID_ProblemDataSize));
TCS_FailNILMsg(inItemOne, TCS_GetErrString(errID_BadComparator));
TCS_FailNILMsg(inItemTwo, TCS_GetErrString(errID_BadComparator));
// Get the structs
SCostNameInfo *structOne = ((SCostNameInfo *)inItemOne);
SCostNameInfo *structTwo = ((SCostNameInfo *)inItemTwo);
TCS_FailNILMsg(structOne, TCS_GetErrString(errID_BadComparator)); // TCS 12/2/02
TCS_FailNILMsg(structTwo, TCS_GetErrString(errID_BadComparator));
// Compare the names
if (structOne->itemCode < structTwo->itemCode)
{
return compare_Less;
}
else if (structOne->itemCode == structTwo->itemCode)
{
return compare_Equal;
}
else
{
return compare_Greater;
}
}
|