ocarina/libsaria/library/file.cpp

51 lines
1010 B
C++

/*
* Manages the libsaria library save file
*/
#include <libsaria/library.h>
#include "library.h"
void LibraryPath::save(OutFile &out)
{
map<ino_t, TrackTag>::iterator it;
out.write_str(path, false);
out.write_lui(file_map.size(), true);
for (it = file_map.begin(); it != file_map.end(); it++) {
out.write_ino(it->first, false);
it->second.save(out);
}
}
namespace libsaria
{
void library::load()
{
unsigned int size;
string dir;
list<LibraryPath> *path_list = get_library_paths();
InFile in("library.lib");
if (!in.good())
return;
size = in.read_lui();
for (unsigned int i = 0; i < size; i++) {
dir = in.read_str();
path_list->push_back(LibraryPath(in, dir));
}
}
void library::save()
{
OutFile out("library.lib");
list<LibraryPath> *path_list = get_library_paths();
list<LibraryPath>::iterator it;
out.write_lui(path_list->size(), true);
for (it = path_list->begin(); it != path_list->end(); it++)
it->save(out);
}
}; /* namespace: libsaria */