|
Lines 33-38
Link Here
|
| 33 |
#include <databaseTk/basicio.h> |
33 |
#include <databaseTk/basicio.h> |
| 34 |
#include <map> |
34 |
#include <map> |
| 35 |
|
35 |
|
|
|
36 |
class CategoryHeader { |
| 37 |
public: |
| 38 |
typedef unsigned int size_type; |
| 39 |
|
| 40 |
static size_type read(FILE *stream, string &name) { |
| 41 |
size_type ret; |
| 42 |
DB_READ_STRING(stream, name); |
| 43 |
DB_READ_GENERIC(stream, ret, size_type); |
| 44 |
return ret; |
| 45 |
} |
| 46 |
|
| 47 |
static void write(FILE *stream, const string &name, const size_type size) { |
| 48 |
DB_WRITE_STRING(stream, name); |
| 49 |
DB_WRITE_GENERIC(stream, size, size_type); |
| 50 |
} |
| 51 |
}; |
| 52 |
|
| 36 |
/** Body of a database. */ |
53 |
/** Body of a database. */ |
| 37 |
class PackageDatabase { |
54 |
class PackageDatabase { |
| 38 |
|
55 |
|
|
Lines 136-143
Link Here
|
| 136 |
for(mapiter c = _packages.begin(); c != _packages.end(); ++c) { |
153 |
for(mapiter c = _packages.begin(); c != _packages.end(); ++c) { |
| 137 |
/* Write category-header followed by a list of the packages. */ |
154 |
/* Write category-header followed by a list of the packages. */ |
| 138 |
vector<Package>::size_type s = c->second.size(); |
155 |
vector<Package>::size_type s = c->second.size(); |
|
|
156 |
CategoryHeader::write(stream, c->first, s); |
| 157 |
#if 0 |
| 139 |
DB_WRITE_STRING(stream, c->first); |
158 |
DB_WRITE_STRING(stream, c->first); |
| 140 |
DB_WRITE_GENERIC(stream, s, vector<Package>::size_type); |
159 |
DB_WRITE_GENERIC(stream, s, vector<Package>::size_type); |
|
|
160 |
#endif |
| 141 |
for(pkgiter p = c->second.begin(); p != c->second.end(); ++p) { |
161 |
for(pkgiter p = c->second.begin(); p != c->second.end(); ++p) { |
| 142 |
/* write package to stream */ |
162 |
/* write package to stream */ |
| 143 |
(*p)->write(stream); |
163 |
(*p)->write(stream); |
|
Lines 151-158
Link Here
|
| 151 |
string name; |
171 |
string name; |
| 152 |
|
172 |
|
| 153 |
for(unsigned int i = 0; i < header->numcategories; i++) { |
173 |
for(unsigned int i = 0; i < header->numcategories; i++) { |
|
|
174 |
size = CategoryHeader::read(stream, name); |
| 175 |
#if 0 |
| 154 |
DB_READ_STRING(stream, name); |
176 |
DB_READ_STRING(stream, name); |
| 155 |
DB_READ_GENERIC(stream, size, vector<Package>::size_type); |
177 |
DB_READ_GENERIC(stream, size, vector<Package>::size_type); |
|
|
178 |
#endif |
| 156 |
for(unsigned int i = 0; i<size; i++) { |
179 |
for(unsigned int i = 0; i<size; i++) { |
| 157 |
fseeko(stream, sizeof(Package::offset_type) , SEEK_CUR); |
180 |
fseeko(stream, sizeof(Package::offset_type) , SEEK_CUR); |
| 158 |
Package *pkg = new Package(stream); |
181 |
Package *pkg = new Package(stream); |