summaryrefslogtreecommitdiffstats
path: root/fbreader/src/library/Comparators.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'fbreader/src/library/Comparators.cpp')
-rw-r--r--fbreader/src/library/Comparators.cpp106
1 files changed, 0 insertions, 106 deletions
diff --git a/fbreader/src/library/Comparators.cpp b/fbreader/src/library/Comparators.cpp
deleted file mode 100644
index 30b4059..0000000
--- a/fbreader/src/library/Comparators.cpp
+++ /dev/null
@@ -1,106 +0,0 @@
-/*
- * Copyright (C) 2009-2012 Geometer Plus <contact@geometerplus.com>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
- * 02110-1301, USA.
- */
-
-#include <cstdlib>
-
-#include "Book.h"
-#include "Author.h"
-#include "Tag.h"
-
-bool BookComparator::operator() (
- const shared_ptr<Book> book0,
- const shared_ptr<Book> book1
-) const {
- const std::string &seriesTitle0 = book0->seriesTitle();
- const std::string &seriesTitle1 = book1->seriesTitle();
- int comp = seriesTitle0.compare(seriesTitle1);
- if (comp == 0) {
- if (!seriesTitle0.empty()) {
- if (book0->indexInSeries() < book1->indexInSeries() &&
- !(book0->indexInSeries() == book1->indexInSeries())) {
- return true;
- }
- }
- return book0->title() < book1->title();
- }
- if (seriesTitle0.empty()) {
- return book0->title() < seriesTitle1;
- }
- if (seriesTitle1.empty()) {
- return seriesTitle0 <= book1->title();
- }
- return comp < 0;
-}
-
-bool BookByFileNameComparator::operator() (
- const shared_ptr<Book> book0,
- const shared_ptr<Book> book1
-) const {
- return book0->file() < book1->file();
-}
-
-bool AuthorComparator::operator() (
- const shared_ptr<Author> author0,
- const shared_ptr<Author> author1
-) const {
- if (author0.isNull()) {
- return !author1.isNull();
- }
- if (author1.isNull()) {
- return false;
- }
-
- const int comp = author0->sortKey().compare(author1->sortKey());
- return comp != 0 ? comp < 0 : author0->name() < author1->name();
-}
-
-bool TagComparator::operator() (
- shared_ptr<Tag> tag0,
- shared_ptr<Tag> tag1
-) const {
- if (tag0.isNull()) {
- return !tag1.isNull();
- }
- if (tag1.isNull()) {
- return false;
- }
-
- std::size_t level0 = tag0->level();
- std::size_t level1 = tag1->level();
- if (level0 > level1) {
- for (; level0 > level1; --level0) {
- tag0 = tag0->parent();
- }
- if (tag0 == tag1) {
- return false;
- }
- } else if (level0 < level1) {
- for (; level0 < level1; --level1) {
- tag1 = tag1->parent();
- }
- if (tag0 == tag1) {
- return true;
- }
- }
- while (tag0->parent() != tag1->parent()) {
- tag0 = tag0->parent();
- tag1 = tag1->parent();
- }
- return tag0->name() < tag1->name();
-}