From b3a8fa293bf770640860425ac4c31f351565b3ef Mon Sep 17 00:00:00 2001 From: Anna Schumaker Date: Fri, 20 Nov 2015 08:18:54 -0500 Subject: [PATCH] core/queue: Move queue_has_flag() out of the queue struct Signed-off-by: Anna Schumaker --- core/deck.cpp | 2 +- core/queue.cpp | 13 ++++--------- gui/queue/toolbar.cpp | 6 +++--- gui/tabs.cpp | 2 +- include/core/queue.h | 14 ++++++-------- tests/core/deck.cpp | 10 +++++----- tests/core/library.cpp | 4 ++-- tests/core/playlist.cpp | 6 +++--- tests/core/queue.cpp | 18 +++++++++--------- 9 files changed, 34 insertions(+), 41 deletions(-) diff --git a/core/deck.cpp b/core/deck.cpp index 0a3c1598..3b4c86dc 100644 --- a/core/deck.cpp +++ b/core/deck.cpp @@ -204,7 +204,7 @@ struct track *deck :: next() std::list::iterator it; for (it = queue_deck.begin(); it != queue_deck.end(); it++) { - if (it->has_flag(Q_ENABLED) == false) + if (queue_has_flag(&(*it), Q_ENABLED) == false) continue; track = queue_next(&(*it)); diff --git a/core/queue.cpp b/core/queue.cpp index a7525ea9..ddda9a2c 100644 --- a/core/queue.cpp +++ b/core/queue.cpp @@ -60,11 +60,6 @@ void queue :: unset_flag(queue_flags flag) q_flags &= ~flag; } -bool queue :: has_flag(queue_flags flag) -{ - return (q_flags & flag) == (unsigned int)flag; -} - static bool track_less_than(struct track *lhs, struct track *rhs, std::vector &order) { @@ -154,7 +149,7 @@ void queue_updated(struct queue *queue, struct track *track) void queue_selected(struct queue *queue, unsigned int index) { queue->q_cur = index; - if (queue->has_flag(Q_REPEAT) == false) + if (queue_has_flag(queue, Q_REPEAT) == false) queue->del(index); } @@ -163,13 +158,13 @@ struct track *queue_next(struct queue *queue) unsigned int size = queue_size(queue); struct track *res; - if (!(queue->q_flags & Q_ENABLED)) + if (!queue_has_flag(queue, Q_ENABLED)) return NULL; else if (size == 0) return NULL; else if (size == 1) queue->q_cur = 0; - else if (queue->has_flag(Q_RANDOM)) + else if (queue_has_flag(queue, Q_RANDOM)) queue->q_cur += random_range(1, size / 2); else queue->q_cur++; @@ -195,7 +190,7 @@ void queue :: sort(compare_t field, bool reset) bool found = false; struct sort_info info = { field, true }; - if (q_flags & Q_NO_SORT) + if (queue_has_flag(this, Q_NO_SORT)) return; if (reset) q_sort.clear(); diff --git a/gui/queue/toolbar.cpp b/gui/queue/toolbar.cpp index de5776d4..f1ba8c69 100644 --- a/gui/queue/toolbar.cpp +++ b/gui/queue/toolbar.cpp @@ -32,21 +32,21 @@ void QueueToolbar :: init(queue *queue, QueueLabel *label, if (flags & T_SWITCH) { _q_switch->property_active().signal_changed().connect( sigc::mem_fun(*this, &QueueToolbar::on_switch_toggled)); - _q_switch->set_active(_queue->has_flag(Q_ENABLED)); + _q_switch->set_active(queue_has_flag(_queue, Q_ENABLED)); _q_switch->show(); } if (flags & T_RANDOM) { _q_random->signal_toggled().connect(sigc::mem_fun(*this, &QueueToolbar::on_random_toggled)); - _q_random->set_active(_queue->has_flag(Q_RANDOM)); + _q_random->set_active(queue_has_flag(_queue, Q_RANDOM)); _q_random->show(); } if (flags & T_REPEAT) { _q_repeat->signal_toggled().connect(sigc::mem_fun(*this, &QueueToolbar::on_repeat_toggled)); - _q_repeat->set_active(_queue->has_flag(Q_REPEAT)); + _q_repeat->set_active(queue_has_flag(_queue, Q_REPEAT)); _q_repeat->show(); } } diff --git a/gui/tabs.cpp b/gui/tabs.cpp index e393d1ed..56fdfb00 100644 --- a/gui/tabs.cpp +++ b/gui/tabs.cpp @@ -422,7 +422,7 @@ void post_init_tabs() unsigned int tab = 0; for (tab = 0; tab < deck::get_queues().size(); tab++) { - if ((deck :: get(tab)->has_flag(Q_ENABLED))) + if (queue_has_flag(deck :: get(tab), Q_ENABLED)) break; } gui :: get_widget("o_notebook")->set_current_page(tab); diff --git a/include/core/queue.h b/include/core/queue.h index c23f5c00..9cd68263 100644 --- a/include/core/queue.h +++ b/include/core/queue.h @@ -124,14 +124,6 @@ struct queue { */ virtual void unset_flag(queue_flags); - /** - * Check if a queue has a specific flag set. - * - * @param flag queue_flag to check. - * @return true if queue_flag is set and false otherwise. - */ - bool has_flag(queue_flags); - /** * Add a track to the queue, possibly matching the @@ -171,6 +163,12 @@ struct queue { }; +/* Called to check if the queue has a specific flag set. */ +static inline bool queue_has_flag(struct queue *queue, enum queue_flags flag) +{ + return (queue->q_flags & flag) == (unsigned int)flag; +} + /* Called to find the size of the queue. */ static inline unsigned int queue_size(struct queue *queue) { diff --git a/tests/core/deck.cpp b/tests/core/deck.cpp index 20238dc8..28b2970d 100644 --- a/tests/core/deck.cpp +++ b/tests/core/deck.cpp @@ -26,7 +26,7 @@ static void test_init() collection :: init(); deck :: init(); - test_equal(collection :: get_queue()->has_flag(Q_RANDOM), true); + test_equal(queue_has_flag(collection :: get_queue(), Q_RANDOM), true); test_equal(deck :: get_queues().size(), (size_t)2); it = deck :: get_queues().begin(); @@ -79,16 +79,16 @@ static void test_create_mv_destroy() q1 = deck :: create(true); q1->q_notify = &test_notifier; test_not_equal(q1, Q_NULL); - test_equal(q1->has_flag(Q_ENABLED), true); - test_equal(q1->has_flag(Q_RANDOM), true); + test_equal(queue_has_flag(q1, Q_ENABLED), true); + test_equal(queue_has_flag(q1, Q_RANDOM), true); test_equal(deck :: index(q1), (unsigned)2); test_equal(deck :: get(2), q1); q2 = deck :: create(false); q2->q_notify = &test_notifier; test_not_equal(q2, Q_NULL); - test_equal(q2->has_flag(Q_ENABLED), true); - test_equal(q2->has_flag(Q_RANDOM), false); + test_equal(queue_has_flag(q2, Q_ENABLED), true); + test_equal(queue_has_flag(q2, Q_RANDOM), false); test_equal(deck :: index(q2), (unsigned)3); test_equal(deck :: get(3), q2); diff --git a/tests/core/library.cpp b/tests/core/library.cpp index bb4cdfe5..0c8f654f 100644 --- a/tests/core/library.cpp +++ b/tests/core/library.cpp @@ -17,8 +17,8 @@ static void test_init() queue *q = collection :: get_queue(); test_not_equal(q, Q_NULL); - test_equal(q->has_flag(Q_ENABLED), true); - test_equal(q->has_flag(Q_REPEAT), true); + test_equal(queue_has_flag(q, Q_ENABLED), true); + test_equal(queue_has_flag(q, Q_REPEAT), true); test_cp_data_dir(); filter_init(); diff --git a/tests/core/playlist.cpp b/tests/core/playlist.cpp index 0b7aa694..4a93fbbd 100644 --- a/tests/core/playlist.cpp +++ b/tests/core/playlist.cpp @@ -18,9 +18,9 @@ static void test_init() queue *q = playlist :: get_queue(); test_not_equal(q, Q_NULL); - test_equal(q->has_flag(Q_ENABLED), true); - test_equal(q->has_flag(Q_REPEAT), true); - test_equal(q->has_flag(Q_NO_SORT), true); + test_equal(queue_has_flag(q, Q_ENABLED), true); + test_equal(queue_has_flag(q, Q_REPEAT), true); + test_equal(queue_has_flag(q, Q_NO_SORT), true); /* init should work even if playlist.db doesn't exist! */ playlist :: init(); diff --git a/tests/core/queue.cpp b/tests/core/queue.cpp index 95952e54..41c7a6ef 100644 --- a/tests/core/queue.cpp +++ b/tests/core/queue.cpp @@ -83,10 +83,10 @@ static void test_flags() struct queue q(0); test_equal(q.q_flags, 0); - test_equal(q.has_flag(Q_ENABLED), false); - test_equal(q.has_flag(Q_RANDOM), false); - test_equal(q.has_flag(Q_REPEAT), false); - test_equal(q.has_flag(Q_NO_SORT), false); + test_equal(queue_has_flag(&q, Q_ENABLED), false); + test_equal(queue_has_flag(&q, Q_RANDOM), false); + test_equal(queue_has_flag(&q, Q_REPEAT), false); + test_equal(queue_has_flag(&q, Q_NO_SORT), false); q.set_flag(Q_ENABLED); test_equal(q.q_flags, Q_ENABLED); @@ -98,10 +98,10 @@ static void test_flags() q.set_flag(Q_RANDOM); q.set_flag(Q_REPEAT); q.set_flag(Q_NO_SORT); - test_equal(q.has_flag(Q_ENABLED), true); - test_equal(q.has_flag(Q_RANDOM), true); - test_equal(q.has_flag(Q_REPEAT), true); - test_equal(q.has_flag(Q_NO_SORT), true); + test_equal(queue_has_flag(&q, Q_ENABLED), true); + test_equal(queue_has_flag(&q, Q_RANDOM), true); + test_equal(queue_has_flag(&q, Q_REPEAT), true); + test_equal(queue_has_flag(&q, Q_NO_SORT), true); } static void test_stress(unsigned int N) @@ -329,7 +329,7 @@ static void test_save_load() r.read(f); file_close(&f); - test_equal(r.has_flag(Q_RANDOM), true); + test_equal(queue_has_flag(&r, Q_RANDOM), true); test_equal(r.q_length, q.q_length); test_equal(queue_size(&r), 13);