#define RAZOR_MAGIC 0x7a7a7a7a
#define RAZOR_VERSION 1
-#define RAZOR_STRING_POOL 0
-#define RAZOR_PACKAGES 1
-#define RAZOR_PROPERTIES 2
-#define RAZOR_FILES 3
-#define RAZOR_PACKAGE_POOL 4
-#define RAZOR_PROPERTY_POOL 5
-#define RAZOR_FILE_POOL 6
-#define RAZOR_FILE_STRING_POOL 7
+#define RAZOR_STRING_POOL 0
+#define RAZOR_PACKAGES 1
+#define RAZOR_PROPERTIES 2
+#define RAZOR_FILES 3
+#define RAZOR_PACKAGE_POOL 4
+#define RAZOR_PROPERTY_POOL 5
+#define RAZOR_FILE_POOL 6
+#define RAZOR_FILE_STRING_POOL 7
+#define RAZOR_DETAILS_STRING_POOL 8
struct razor_package {
uint name : 24;
struct array property_pool;
struct array file_pool;
struct array file_string_pool;
+ struct array details_string_pool;
struct razor_set_header *header;
};
struct razor_set *set;
struct hashtable table;
struct hashtable file_table;
+ struct hashtable details_table;
struct razor_package *package;
struct array properties;
struct array files;
{ RAZOR_PROPERTY_POOL, offsetof(struct razor_set, property_pool) },
{ RAZOR_FILE_POOL, offsetof(struct razor_set, file_pool) },
{ RAZOR_FILE_STRING_POOL, offsetof(struct razor_set, file_string_pool) },
+ { RAZOR_DETAILS_STRING_POOL, offsetof(struct razor_set, details_string_pool) },
};
struct razor_set *
*empty = '\0';
empty = array_add(&set->file_string_pool, 1);
*empty = '\0';
+ empty = array_add(&set->details_string_pool, 1);
+ *empty = '\0';
e->name = 0;
e->flags = RAZOR_ENTRY_LAST;
e->start = 0;
const char *url,
const char *license)
{
- importer->package->summary = hashtable_tokenize(&importer->table, summary);
- importer->package->description = hashtable_tokenize(&importer->table, description);
- importer->package->url = hashtable_tokenize(&importer->table, url);
- importer->package->license = hashtable_tokenize(&importer->table, license);
-
+ importer->package->summary = hashtable_tokenize(&importer->details_table, summary);
+ importer->package->description = hashtable_tokenize(&importer->details_table, description);
+ importer->package->url = hashtable_tokenize(&importer->details_table, url);
+ importer->package->license = hashtable_tokenize(&importer->details_table, license);
}
void
importer->set = razor_set_create();
hashtable_init(&importer->table, &importer->set->string_pool);
hashtable_init(&importer->file_table, &importer->set->file_string_pool);
+ hashtable_init(&importer->details_table, &importer->set->details_string_pool);
return importer;
}
set = importer->set;
hashtable_release(&importer->table);
hashtable_release(&importer->file_table);
+ hashtable_release(&importer->details_table);
free(importer);
return set;
const char **summary, const char **description,
const char **url, const char **license)
{
- const char *pool = set->string_pool.data;
+ const char *pool = set->details_string_pool.data;
*summary = &pool[package->summary];
*description = &pool[package->description];
struct razor_set *set;
struct hashtable table;
struct hashtable file_table;
+ struct hashtable details_table;
struct source source1;
struct source source2;
};
merger->set = razor_set_create();
hashtable_init(&merger->table, &merger->set->string_pool);
hashtable_init(&merger->file_table, &merger->set->file_string_pool);
+ hashtable_init(&merger->details_table, &merger->set->details_string_pool);
merger->source1.set = set1;
count = set1->properties.size / sizeof (struct razor_property);
result = merger->set;
hashtable_release(&merger->table);
hashtable_release(&merger->file_table);
+ hashtable_release(&merger->details_table);
free(merger);
return result;