⛏️ index : haiku.git

/*
 * Copyright 2020-2025, Andrew Lindesay <apl@lindesay.co.nz>.
 * All rights reserved. Distributed under the terms of the MIT License.
 */


#include "RatingStability.h"

#include <Collator.h>

#include "LocaleUtils.h"
#include "Logger.h"


bool
IsRatingStabilityRefLess(const RatingStabilityRef& rs1, const RatingStabilityRef& rs2)
{
	if (!rs1.IsSet() || !rs2.IsSet())
		debugger("illegal state in rating stability less");
	return *(rs1.Get()) < *(rs2.Get());
}


RatingStability::RatingStability()
	:
	fCode(),
	fName(),
	fOrdering(0)
{
}


RatingStability::RatingStability(const BString& code, const BString& name, int64 ordering)
	:
	fCode(code),
	fName(name),
	fOrdering(ordering)
{
}


RatingStability::RatingStability(const RatingStability& other)
	:
	fCode(other.fCode),
	fName(other.fName),
	fOrdering(other.fOrdering)
{
}


bool
RatingStability::operator<(const RatingStability& other) const
{
	return Compare(other) < 0;
}


bool
RatingStability::operator==(const RatingStability& other) const
{
	return fCode == other.fCode && fName == other.fName && fOrdering == other.fOrdering;
}


bool
RatingStability::operator!=(const RatingStability& other) const
{
	return !(*this == other);
}


int
RatingStability::Compare(const RatingStability& other) const
{
	int32 result = other.Ordering() - Ordering();
	if (0 == result)
		result = Code().Compare(other.Code());
	return result;
}