summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/analysis/db/collection-int.h4
-rw-r--r--src/analysis/db/collection.c133
-rw-r--r--src/analysis/db/collection.h6
-rw-r--r--src/analysis/db/items/bookmark.c53
-rw-r--r--src/analysis/db/items/comment.c53
-rw-r--r--src/analysis/db/items/move.c53
-rw-r--r--src/analysis/db/items/switcher.c53
-rw-r--r--src/gui/menus/edition.c21
8 files changed, 36 insertions, 340 deletions
diff --git a/src/analysis/db/collection-int.h b/src/analysis/db/collection-int.h
index c9d37bf..1355592 100644
--- a/src/analysis/db/collection-int.h
+++ b/src/analysis/db/collection-int.h
@@ -38,9 +38,6 @@ typedef bool (* collec_create_db_table_fc) (const GDbCollection *, sqlite3 *);
/* Charge les valeurs utiles pour une localisation. */
typedef bool (* collec_load_item) (GDbCollection *, const bound_value *, size_t);
-/* Détermine si un élément est déjà présent ou non. */
-typedef GDbItem * (* collec_has_key_fc) (GDbCollection *, va_list);
-
/* Collection générique d'éléments (instance) */
@@ -69,7 +66,6 @@ struct _GDbCollectionClass
collec_create_db_table_fc create_table; /* Création de la table en SQL */
collec_load_item load_item; /* Charge un élément */
- collec_has_key_fc has_key; /* Recherche de présence */
/* Signaux */
diff --git a/src/analysis/db/collection.c b/src/analysis/db/collection.c
index 6e877a4..ce2d580 100644
--- a/src/analysis/db/collection.c
+++ b/src/analysis/db/collection.c
@@ -57,17 +57,17 @@ static void g_db_collection_dispose(GDbCollection *);
/* Procède à la libération totale de la mémoire. */
static void g_db_collection_finalize(GDbCollection *);
-/* Retrouve l'élément correspondant à un horodatage. */
-size_t g_db_collection_find_by_timestamped(GDbCollection *, const GDbItem *);
-
/* Ajoute un élément dans la liste des éléments actifs. */
static void g_db_collection_set_last_item(GDbCollection *, GDbItem *, bool);
+/* Retrouve l'élément correspondant à un horodatage. */
+static size_t g_db_collection_find_by_timestamped(GDbCollection *, const GDbItem *);
+
/* Retire un élément de la liste des éléments courants. */
static void g_db_collection_unset_last_item(GDbCollection *, GDbItem *, size_t);
/* Retrouve le premier élément correspondant à un horodatage. */
-size_t g_db_collection_find_by_timestamp(GDbCollection *, timestamp_t);
+static size_t g_db_collection_find_by_timestamp(GDbCollection *, timestamp_t);
@@ -586,98 +586,6 @@ GDbItem **g_db_collection_get_items(const GDbCollection *collec, size_t *count)
/******************************************************************************
* *
-* Paramètres : collec = ensemble d'éléments à consulter. *
-* ... = clef identifiant de manière unique un élément. *
-* *
-* Description : Détermine si un élément est déjà présent ou non. *
-* *
-* Retour : Elément trouvé ou NULL si aucun. *
-* *
-* Remarques : - *
-* *
-******************************************************************************/
-
-GDbItem *g_db_collection_has_key(GDbCollection *collec, ...)
-{
- GDbItem *result; /* Bilan à retourner */
- va_list ap; /* Liste d'arguments en plus */
-
- va_start(ap, collec);
-
- result = G_DB_COLLECTION_GET_CLASS(collec)->has_key(collec, ap);
-
- va_end(ap);
-
- return result;
-
-}
-
-
-/******************************************************************************
-* *
-* Paramètres : binary = élément binaire à consulter. *
-* item = définition de l'élément à retrouver. *
-* *
-* Description : Retrouve l'élément correspondant à un horodatage. *
-* *
-* Retour : Indice valide pour un élément retrouvé, invalide sinon. *
-* *
-* Remarques : - *
-* *
-******************************************************************************/
-
-size_t g_db_collection_find_by_timestamped(GDbCollection *collec, const GDbItem *item)
-{
- size_t result; /* Indice à retourner */
- GDbItem **found; /* Emplacement de la trouvaille*/
-
- found = bsearch(&item, collec->items, collec->count, sizeof(GDbItem *),
- (__compar_fn_t)g_db_item_cmp_timestamp);
-
- if (found == NULL)
- result = collec->count;
- else
- result = found - collec->items;
-
- return result;
-
-}
-
-
-/******************************************************************************
-* *
-* Paramètres : collec = ensemble d'éléments à consulter. *
-* item = élément complet dont un double est à rechercher. *
-* *
-* Description : Détermine si un élément est déjà présent ou non. *
-* *
-* Retour : true si un élément similaire est présent dans la collection. *
-* *
-* Remarques : - *
-* *
-******************************************************************************/
-
-bool g_db_collection_has_item(GDbCollection *collec, GDbItem *item)
-{
- bool result; /* Bilan à retourner */
- size_t index; /* Indice de l'élément trouvé */
-
- /**
- * Un verrou doit être posé !
- * Il n'y a pas d'assert() possible pour le vérifier...
- */
-
- index = g_db_collection_find_by_timestamped(collec, item);
-
- result = (index < collec->count);
-
- return result;
-
-}
-
-
-/******************************************************************************
-* *
* Paramètres : collec = ensemble d'éléments à considérer. *
* item = élément de collection à manipuler. *
* new = précise la nature de l'élément à insérer. *
@@ -858,6 +766,37 @@ bool g_db_collection_drop_disabled_items(GDbCollection *collec, packed_buffer *p
/******************************************************************************
* *
+* Paramètres : binary = élément binaire à consulter. *
+* item = définition de l'élément à retrouver. *
+* *
+* Description : Retrouve l'élément correspondant à un horodatage. *
+* *
+* Retour : Indice valide pour un élément retrouvé, invalide sinon. *
+* *
+* Remarques : - *
+* *
+******************************************************************************/
+
+static size_t g_db_collection_find_by_timestamped(GDbCollection *collec, const GDbItem *item)
+{
+ size_t result; /* Indice à retourner */
+ GDbItem **found; /* Emplacement de la trouvaille*/
+
+ found = bsearch(&item, collec->items, collec->count, sizeof(GDbItem *),
+ (__compar_fn_t)g_db_item_cmp_timestamp);
+
+ if (found == NULL)
+ result = collec->count;
+ else
+ result = found - collec->items;
+
+ return result;
+
+}
+
+
+/******************************************************************************
+* *
* Paramètres : collec = ensemble d'éléments à considérer. *
* item = élément de collection à manipuler. *
* *
@@ -980,7 +919,7 @@ static void g_db_collection_unset_last_item(GDbCollection *collec, GDbItem *item
* *
******************************************************************************/
-size_t g_db_collection_find_by_timestamp(GDbCollection *collec, timestamp_t timestamp)
+static size_t g_db_collection_find_by_timestamp(GDbCollection *collec, timestamp_t timestamp)
{
size_t result; /* Indice à retourner */
timestamp_t prev_ts; /* Horodatage précédent */
diff --git a/src/analysis/db/collection.h b/src/analysis/db/collection.h
index 76d134b..1822a36 100644
--- a/src/analysis/db/collection.h
+++ b/src/analysis/db/collection.h
@@ -95,12 +95,6 @@ void g_db_collection_lock_unlock(GDbCollection *, bool, bool);
/* Renvoie la liste des éléments rassemblés. */
GDbItem **g_db_collection_get_items(const GDbCollection *, size_t *);
-/* Détermine si un élément est déjà présent ou non. */
-GDbItem *g_db_collection_has_key(GDbCollection *, ...);
-
-/* Détermine si un élément est déjà présent ou non. */
-bool g_db_collection_has_item(GDbCollection *, GDbItem *);
-
/* Procède à l'ajout d'un nouvel élément dans la collection. */
bool _g_db_collection_add_item(GDbCollection *, GDbItem *, bool);
diff --git a/src/analysis/db/items/bookmark.c b/src/analysis/db/items/bookmark.c
index 8c15e5a..0f985d6 100644
--- a/src/analysis/db/items/bookmark.c
+++ b/src/analysis/db/items/bookmark.c
@@ -141,9 +141,6 @@ static void g_bookmark_collection_finalize(GBookmarkCollection *);
/* Crée la table des signets dans une base de données. */
static bool g_bookmark_collection_create_db_table(const GBookmarkCollection *, sqlite3 *);
-/* Détermine si un élément est déjà présent ou non. */
-static GDbItem *g_bookmark_collection_has_key(GBookmarkCollection *, va_list);
-
/* ---------------------------------------------------------------------------------- */
@@ -788,7 +785,6 @@ static void g_bookmark_collection_class_init(GBookmarkCollectionClass *klass)
collec = G_DB_COLLECTION_CLASS(klass);
collec->create_table = (collec_create_db_table_fc)g_bookmark_collection_create_db_table;
- collec->has_key = (collec_has_key_fc)g_bookmark_collection_has_key;
}
@@ -920,52 +916,3 @@ static bool g_bookmark_collection_create_db_table(const GBookmarkCollection *col
return (ret == SQLITE_OK);
}
-
-
-/******************************************************************************
-* *
-* Paramètres : collec = ensemble d'éléments à consulter. *
-* ap = clef identifiant de manière unique un élément. *
-* *
-* Description : Détermine si un élément est déjà présent ou non. *
-* *
-* Retour : Elément trouvé ou NULL si aucun. *
-* *
-* Remarques : - *
-* *
-******************************************************************************/
-
-static GDbItem *g_bookmark_collection_has_key(GBookmarkCollection *collec, va_list ap)
-{
- GDbItem *result; /* Bilan à retourner */
- vmpa2t *ref; /* Adresse de référence */
- GList *items; /* Eléments déjà en place */
- GList *iter; /* Boucle de parcours */
- GDbBookmark *bm; /* Signet à consulter */
-
- result = NULL;
-
- ref = va_arg(ap, vmpa2t *);
-
-#if 0
- items = g_db_collection_get_items(G_DB_COLLECTION(collec));
-
- for (iter = g_list_first(items); iter != NULL && result == NULL; iter = g_list_next(iter))
- {
- bm = G_DB_BOOKMARK(iter->data);
-
- if (cmp_vmpa(&bm->addr, ref) != 0)
-
- /**
- * Un verrou est sensé être posé, donc il n'y a pas besoin
- * de toucher au décompte des références car l'élément trouvé
- * ne peut pas être supprimé.
- */
- result = G_DB_ITEM(bm);
-
- }
-#endif
-
- return result;
-
-}
diff --git a/src/analysis/db/items/comment.c b/src/analysis/db/items/comment.c
index 39aeb69..47ab5b3 100644
--- a/src/analysis/db/items/comment.c
+++ b/src/analysis/db/items/comment.c
@@ -183,9 +183,6 @@ static void g_comment_collection_finalize(GCommentCollection *);
/* Crée la table des commentaires dans une base de données. */
static bool g_comment_collection_create_db_table(const GCommentCollection *, sqlite3 *);
-/* Détermine si un élément est déjà présent ou non. */
-static GDbItem *g_comment_collection_has_key(GCommentCollection *, va_list);
-
/* ---------------------------------------------------------------------------------- */
@@ -1511,7 +1508,6 @@ static void g_comment_collection_class_init(GCommentCollectionClass *klass)
collec = G_DB_COLLECTION_CLASS(klass);
collec->create_table = (collec_create_db_table_fc)g_comment_collection_create_db_table;
- collec->has_key = (collec_has_key_fc)g_comment_collection_has_key;
}
@@ -1646,52 +1642,3 @@ static bool g_comment_collection_create_db_table(const GCommentCollection *colle
return (ret == SQLITE_OK);
}
-
-
-/******************************************************************************
-* *
-* Paramètres : collec = ensemble d'éléments à consulter. *
-* ap = clef identifiant de manière unique un élément. *
-* *
-* Description : Détermine si un élément est déjà présent ou non. *
-* *
-* Retour : Elément trouvé ou NULL si aucun. *
-* *
-* Remarques : - *
-* *
-******************************************************************************/
-
-static GDbItem *g_comment_collection_has_key(GCommentCollection *collec, va_list ap)
-{
- GDbItem *result; /* Bilan à retourner */
- vmpa2t *ref; /* Adresse de référence */
- GList *items; /* Eléments déjà en place */
- GList *iter; /* Boucle de parcours */
- GDbComment *bm; /* Signet à consulter */
-
- result = NULL;
-
- ref = va_arg(ap, vmpa2t *);
-
-#if 0
- items = g_db_collection_get_items(G_DB_COLLECTION(collec));
-
- for (iter = g_list_first(items); iter != NULL && result == NULL; iter = g_list_next(iter))
- {
- bm = G_DB_COMMENT(iter->data);
-
- if (cmp_vmpa(&bm->addr, ref) != 0)
-
- /**
- * Un verrou est sensé être posé, donc il n'y a pas besoin
- * de toucher au décompte des références car l'élément trouvé
- * ne peut pas être supprimé.
- */
- result = G_DB_ITEM(bm);
-
- }
-#endif
-
- return result;
-
-}
diff --git a/src/analysis/db/items/move.c b/src/analysis/db/items/move.c
index 3e347d3..842449a 100644
--- a/src/analysis/db/items/move.c
+++ b/src/analysis/db/items/move.c
@@ -136,9 +136,6 @@ static void g_move_collection_finalize(GMoveCollection *);
/* Crée la table des basculements dans une base de données. */
static bool g_move_collection_create_db_table(const GMoveCollection *, sqlite3 *);
-/* Détermine si un élément est déjà présent ou non. */
-static GDbItem *g_move_collection_has_key(GMoveCollection *, va_list);
-
/* ---------------------------------------------------------------------------------- */
@@ -631,7 +628,6 @@ static void g_move_collection_class_init(GMoveCollectionClass *klass)
collec = G_DB_COLLECTION_CLASS(klass);
collec->create_table = (collec_create_db_table_fc)g_move_collection_create_db_table;
- collec->has_key = (collec_has_key_fc)g_move_collection_has_key;
}
@@ -766,52 +762,3 @@ static bool g_move_collection_create_db_table(const GMoveCollection *collec, sql
return (ret == SQLITE_OK);
}
-
-
-/******************************************************************************
-* *
-* Paramètres : collec = ensemble d'éléments à consulter. *
-* ap = clef identifiant de manière unique un élément. *
-* *
-* Description : Détermine si un élément est déjà présent ou non. *
-* *
-* Retour : Elément trouvé ou NULL si aucun. *
-* *
-* Remarques : - *
-* *
-******************************************************************************/
-
-static GDbItem *g_move_collection_has_key(GMoveCollection *collec, va_list ap)
-{
- GDbItem *result; /* Bilan à retourner */
- const GLineCursor *ref; /* Emplacement de référence */
- GList *items; /* Eléments déjà en place */
- GList *iter; /* Boucle de parcours */
- GDbMove *bm; /* Signet à consulter */
-
- result = NULL;
-
- ref = va_arg(ap, const GLineCursor *);
-
-#if 0
- items = g_db_collection_get_items(G_DB_COLLECTION(collec));
-
- for (iter = g_list_first(items); iter != NULL && result == NULL; iter = g_list_next(iter))
- {
- bm = G_DB_MOVE(iter->data);
-
- if (g_line_cursor_compare(bm->src, ref) == 0)
-
- /**
- * Un verrou est sensé être posé, donc il n'y a pas besoin
- * de toucher au décompte des références car l'élément trouvé
- * ne peut pas être supprimé.
- */
- result = G_DB_ITEM(bm);
-
- }
-#endif
-
- return result;
-
-}
diff --git a/src/analysis/db/items/switcher.c b/src/analysis/db/items/switcher.c
index 2a3aa42..e9305d8 100644
--- a/src/analysis/db/items/switcher.c
+++ b/src/analysis/db/items/switcher.c
@@ -136,9 +136,6 @@ static void g_switcher_collection_finalize(GSwitcherCollection *);
/* Crée la table des basculements dans une base de données. */
static bool g_switcher_collection_create_db_table(const GSwitcherCollection *, sqlite3 *);
-/* Détermine si un élément est déjà présent ou non. */
-static GDbItem *g_switcher_collection_has_key(GSwitcherCollection *, va_list);
-
/* ---------------------------------------------------------------------------------- */
@@ -783,7 +780,6 @@ static void g_switcher_collection_class_init(GSwitcherCollectionClass *klass)
collec = G_DB_COLLECTION_CLASS(klass);
collec->create_table = (collec_create_db_table_fc)g_switcher_collection_create_db_table;
- collec->has_key = (collec_has_key_fc)g_switcher_collection_has_key;
}
@@ -916,52 +912,3 @@ static bool g_switcher_collection_create_db_table(const GSwitcherCollection *col
return (ret == SQLITE_OK);
}
-
-
-/******************************************************************************
-* *
-* Paramètres : collec = ensemble d'éléments à consulter. *
-* ap = clef identifiant de manière unique un élément. *
-* *
-* Description : Détermine si un élément est déjà présent ou non. *
-* *
-* Retour : Elément trouvé ou NULL si aucun. *
-* *
-* Remarques : - *
-* *
-******************************************************************************/
-
-static GDbItem *g_switcher_collection_has_key(GSwitcherCollection *collec, va_list ap)
-{
- GDbItem *result; /* Bilan à retourner */
- vmpa2t *ref; /* Adresse de référence */
- GList *items; /* Eléments déjà en place */
- GList *iter; /* Boucle de parcours */
- GDbSwitcher *bm; /* Signet à consulter */
-
- result = NULL;
-
- ref = va_arg(ap, vmpa2t *);
-
-#if 0
- items = g_db_collection_get_items(G_DB_COLLECTION(collec));
-
- for (iter = g_list_first(items); iter != NULL && result == NULL; iter = g_list_next(iter))
- {
- bm = G_DB_SWITCHER(iter->data);
-
- if (cmp_vmpa(&bm->addr, ref) != 0)
-
- /**
- * Un verrou est sensé être posé, donc il n'y a pas besoin
- * de toucher au décompte des références car l'élément trouvé
- * ne peut pas être supprimé.
- */
- result = G_DB_ITEM(bm);
-
- }
-#endif
-
- return result;
-
-}
diff --git a/src/gui/menus/edition.c b/src/gui/menus/edition.c
index 92596ca..d3381bf 100644
--- a/src/gui/menus/edition.c
+++ b/src/gui/menus/edition.c
@@ -736,29 +736,8 @@ static void mcb_edition_bookmarks_toggle(GtkMenuItem *menuitem, GMenuBar *bar)
{
bookmark = get_item_from_bookmark_dialog(builder, &addr);
- g_db_collection_wlock(G_DB_COLLECTION(collec));
-
- if (g_db_collection_has_item(collec, G_DB_ITEM(bookmark)))
- {
- ret = qck_show_question(GTK_WINDOW(ref),
- _("Location already bookmarked!"),
- _("A bookmark has been defined at the same location.\n" \
- "Do you want to replace it ?"));
-
- if (ret != GTK_RESPONSE_YES)
- {
- g_object_unref(G_OBJECT(bookmark));
- goto mcb_ebt_add_finish;
- }
-
- }
-
g_loaded_binary_add_to_collection(binary, G_DB_ITEM(bookmark));
- mcb_ebt_add_finish:
-
- g_db_collection_wunlock(G_DB_COLLECTION(collec));
-
}
gtk_widget_destroy(dialog);