1/*
2 * Copyright 2013-2014, Stephan A��mus <superstippi@gmx.de>.
3 * Copyright 2013, Rene Gollent <rene@gollent.com>.
4 * Copyright 2016-2023, Andrew Lindesay <apl@lindesay.co.nz>.
5 * All rights reserved. Distributed under the terms of the MIT License.
6 */
7
8
9#include "PackageCategory.h"
10
11#include <Collator.h>
12
13#include "LocaleUtils.h"
14#include "Logger.h"
15
16
17PackageCategory::PackageCategory()
18	:
19	BReferenceable(),
20	fCode(),
21	fName()
22{
23}
24
25
26PackageCategory::PackageCategory(const BString& code, const BString& name)
27	:
28	BReferenceable(),
29	fCode(code),
30	fName(name)
31{
32}
33
34
35PackageCategory::PackageCategory(const PackageCategory& other)
36	:
37	BReferenceable(),
38	fCode(other.fCode),
39	fName(other.fName)
40{
41}
42
43
44PackageCategory&
45PackageCategory::operator=(const PackageCategory& other)
46{
47	fCode = other.fCode;
48	fName = other.fName;
49	return *this;
50}
51
52
53bool
54PackageCategory::operator==(const PackageCategory& other) const
55{
56	return fCode == other.fCode && fName == other.fName;
57}
58
59
60bool
61PackageCategory::operator!=(const PackageCategory& other) const
62{
63	return !(*this == other);
64}
65
66
67int
68PackageCategory::Compare(const PackageCategory& other) const
69{
70	BCollator* collator = LocaleUtils::GetSharedCollator();
71	int32 result = collator->Compare(Name().String(),
72		other.Name().String());
73	if (result == 0)
74		result = Code().Compare(other.Code());
75	return result;
76}
77
78
79bool IsPackageCategoryBefore(const CategoryRef& c1,
80	const CategoryRef& c2)
81{
82	if (!c1.IsSet() || !c2.IsSet())
83		HDFATAL("unexpected NULL reference in a referencable");
84	return c1->Compare(*c2) < 0;
85}
86