core/queue: Move read() and write() into TempQueues
These functions are only used by temporary queues, and the collection queue has its own save function. Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
This commit is contained in:
parent
acc78a6667
commit
6aab58629e
|
@ -23,6 +23,25 @@ TempQueue :: TempQueue(bool random, struct queue_ops *ops)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void TempQueue :: write(file &file)
|
||||||
|
{
|
||||||
|
file_writef(&file, "%u %zu", q_flags, q_tracks.size());
|
||||||
|
for (unsigned int i = 0; i < q_tracks.size(); i++)
|
||||||
|
file_writef(&file, " %u", q_tracks[i]->tr_dbe.dbe_index);
|
||||||
|
}
|
||||||
|
|
||||||
|
void TempQueue :: read(file &file)
|
||||||
|
{
|
||||||
|
unsigned int n, id;
|
||||||
|
file_readf(&file, "%u %u", &q_flags, &n);
|
||||||
|
q_tracks.resize(n);
|
||||||
|
for (unsigned int i = 0; i < n; i++) {
|
||||||
|
file_readf(&file, "%u", &id);
|
||||||
|
q_tracks[i] = track_get(id);
|
||||||
|
q_length += q_tracks[i]->tr_length;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
unsigned int TempQueue :: add(struct track *track)
|
unsigned int TempQueue :: add(struct track *track)
|
||||||
{
|
{
|
||||||
unsigned int res = queue_add(this, track);
|
unsigned int res = queue_add(this, track);
|
||||||
|
|
|
@ -85,25 +85,6 @@ void queue_init(struct queue *queue, unsigned int flags,
|
||||||
queue :: ~queue()
|
queue :: ~queue()
|
||||||
{}
|
{}
|
||||||
|
|
||||||
void queue :: write(file &file)
|
|
||||||
{
|
|
||||||
file_writef(&file, "%u %zu", q_flags, q_tracks.size());
|
|
||||||
for (unsigned int i = 0; i < q_tracks.size(); i++)
|
|
||||||
file_writef(&file, " %u", q_tracks[i]->tr_dbe.dbe_index);
|
|
||||||
}
|
|
||||||
|
|
||||||
void queue :: read(file &file)
|
|
||||||
{
|
|
||||||
unsigned int n, id;
|
|
||||||
file_readf(&file, "%u %u", &q_flags, &n);
|
|
||||||
q_tracks.resize(n);
|
|
||||||
for (unsigned int i = 0; i < n; i++) {
|
|
||||||
file_readf(&file, "%u", &id);
|
|
||||||
q_tracks[i] = track_get(id);
|
|
||||||
q_length += q_tracks[i]->tr_length;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void queue_set_flag(struct queue *queue, enum queue_flags flag)
|
void queue_set_flag(struct queue *queue, enum queue_flags flag)
|
||||||
{
|
{
|
||||||
queue->q_flags |= flag;
|
queue->q_flags |= flag;
|
||||||
|
|
|
@ -18,6 +18,9 @@ public:
|
||||||
TempQueue();
|
TempQueue();
|
||||||
TempQueue(bool, struct queue_ops *);
|
TempQueue(bool, struct queue_ops *);
|
||||||
|
|
||||||
|
void read(file &);
|
||||||
|
void write(file &);
|
||||||
|
|
||||||
unsigned int add(struct track *);
|
unsigned int add(struct track *);
|
||||||
void del(struct track *);
|
void del(struct track *);
|
||||||
void del(unsigned int);
|
void del(unsigned int);
|
||||||
|
|
|
@ -94,20 +94,6 @@ struct queue {
|
||||||
|
|
||||||
|
|
||||||
virtual ~queue(); /**< Queue destructor. */
|
virtual ~queue(); /**< Queue destructor. */
|
||||||
|
|
||||||
/**
|
|
||||||
* Write a queue to disk.
|
|
||||||
*
|
|
||||||
* @param file File that Queue data will be written to.
|
|
||||||
*/
|
|
||||||
void write(file &);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Read a queue from disk.
|
|
||||||
*
|
|
||||||
* @param file File to read Queue data from.
|
|
||||||
*/
|
|
||||||
void read(file &);
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -370,41 +370,6 @@ static void test_sorting()
|
||||||
test_loop_equal(track->tr_dbe.dbe_index, 12 - i, i);
|
test_loop_equal(track->tr_dbe.dbe_index, 12 - i, i);
|
||||||
} test_loop_passed();
|
} test_loop_passed();
|
||||||
test_equal(count_sort, 6);
|
test_equal(count_sort, 6);
|
||||||
}
|
|
||||||
|
|
||||||
static void test_save_load()
|
|
||||||
{
|
|
||||||
struct track *track;
|
|
||||||
struct queue q, r;
|
|
||||||
unsigned int i;
|
|
||||||
struct file f;
|
|
||||||
|
|
||||||
queue_init(&q, Q_RANDOM, &test_ops);
|
|
||||||
queue_init(&r, 0, &test_ops);
|
|
||||||
|
|
||||||
for (i = 0; i < 13; i++)
|
|
||||||
queue_add(&q, track_get(i));
|
|
||||||
queue_sort(&q, COMPARE_TRACK, true);
|
|
||||||
queue_sort(&q, COMPARE_TRACK, false);
|
|
||||||
|
|
||||||
file_init(&f, "test.q", 0);
|
|
||||||
file_open(&f, OPEN_WRITE);
|
|
||||||
q.write(f);
|
|
||||||
file_close(&f);
|
|
||||||
|
|
||||||
file_open(&f, OPEN_READ);
|
|
||||||
r.read(f);
|
|
||||||
file_close(&f);
|
|
||||||
|
|
||||||
test_equal(queue_has_flag(&r, Q_RANDOM), true);
|
|
||||||
test_equal(r.q_length, q.q_length);
|
|
||||||
test_equal(queue_size(&r), 13);
|
|
||||||
|
|
||||||
for (i = 0; i < 13; i++) {
|
|
||||||
track = queue_at(&q, i);
|
|
||||||
test_loop_not_equal(track, NULL ,i);
|
|
||||||
test_loop_equal(track->tr_dbe.dbe_index, 12 - i, i);
|
|
||||||
} test_loop_passed();
|
|
||||||
|
|
||||||
__test_deinit_core();
|
__test_deinit_core();
|
||||||
}
|
}
|
||||||
|
@ -417,5 +382,4 @@ DECLARE_UNIT_TESTS(
|
||||||
UNIT_TEST("Queue Stress (n = 100,000)", test_stress_100K),
|
UNIT_TEST("Queue Stress (n = 100,000)", test_stress_100K),
|
||||||
UNIT_TEST("Queue Random Next and Selection", test_rand_select),
|
UNIT_TEST("Queue Random Next and Selection", test_rand_select),
|
||||||
UNIT_TEST("Queue Sorting", test_sorting),
|
UNIT_TEST("Queue Sorting", test_sorting),
|
||||||
UNIT_TEST("Queue Save and Load", test_save_load),
|
|
||||||
);
|
);
|
||||||
|
|
Loading…
Reference in New Issue