/** * Copyright 2014 (c) Anna Schumaker. */ #include index_entry :: index_entry() { ie_set = SET_INIT(); } index_entry :: index_entry(const std::string &key) : ie_key(key) { ie_set = SET_INIT(); } index_entry :: ~index_entry() { set_deinit(&ie_set); } const std::string index_entry :: primary_key() const { return ie_key; } void index_entry :: write(file &file) { file_writef(&file, "%s\n" , ie_key.c_str()); set_write(&file, &ie_set); } void index_entry :: read(file &file) { gchar *key = file_readl(&file); ie_key = key; g_free(key); set_read(&file, &ie_set); } void index_init(database *index, const gchar *filepath, bool autosave) { db_init(index, filepath, autosave); } index_entry *index_insert(database *index, const gchar *key, unsigned int value) { index_entry *it = db_find(index, key); set_insert(&it->ie_set, value); db_autosave(index); return it; } void index_remove(database *index, const gchar *key, unsigned int value) { index_entry *it = db_get(index, key); if (it) { set_remove(&it->ie_set, value); db_autosave(index); } } bool index_has(database *index, const gchar *key, unsigned int value) { index_entry *it = db_get(index, key); if (!it) return false; return set_has(&it->ie_set, value); }