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:
Anna Schumaker 2015-11-29 17:34:21 -05:00
parent acc78a6667
commit 6aab58629e
5 changed files with 22 additions and 69 deletions

View File

@ -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 res = queue_add(this, track);

View File

@ -85,25 +85,6 @@ void queue_init(struct queue *queue, unsigned int flags,
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)
{
queue->q_flags |= flag;

View File

@ -18,6 +18,9 @@ public:
TempQueue();
TempQueue(bool, struct queue_ops *);
void read(file &);
void write(file &);
unsigned int add(struct track *);
void del(struct track *);
void del(unsigned int);

View File

@ -94,20 +94,6 @@ struct queue {
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 &);
};

View File

@ -370,41 +370,6 @@ static void test_sorting()
test_loop_equal(track->tr_dbe.dbe_index, 12 - i, i);
} test_loop_passed();
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();
}
@ -417,5 +382,4 @@ DECLARE_UNIT_TESTS(
UNIT_TEST("Queue Stress (n = 100,000)", test_stress_100K),
UNIT_TEST("Queue Random Next and Selection", test_rand_select),
UNIT_TEST("Queue Sorting", test_sorting),
UNIT_TEST("Queue Save and Load", test_save_load),
);