3 KiB
3 KiB
Ticket #007
Titre
Créer le module InvestigationNode.
Objectif
Créer une structure métier représentant un élément de l'arborescence d'une enquête.
Un nœud peut représenter :
- un dossier ;
- un fichier.
Ce module servira de base au futur modèle d'arborescence.
Responsabilités
Le module InvestigationNode doit :
- mémoriser le nom d'un élément ;
- mémoriser son type ;
- gérer sa propre mémoire ;
- exposer ses informations en lecture seule.
Hors périmètre
Ce ticket ne doit pas :
- parcourir le système de fichiers ;
- construire une arborescence complète ;
- stocker des enfants ;
- afficher quoi que ce soit avec GTK ;
- communiquer avec SQLite ;
- ouvrir une enquête.
Architecture
InvestigationTreeModel
│
└── InvestigationNode
Le module appartient à la couche core.
Il ne doit contenir aucune dépendance vers GTK.
Fichiers concernés
include/core/investigation_node.h
src/core/investigation_node.c
Type attendu
typedef enum
{
INVESTIGATION_NODE_DIRECTORY,
INVESTIGATION_NODE_FILE
} InvestigationNodeType;
Interface publique attendue
InvestigationNode *investigation_node_new(
const char *name,
InvestigationNodeType type
);
void investigation_node_free(
InvestigationNode *node
);
const char *investigation_node_get_name(
const InvestigationNode *node
);
InvestigationNodeType investigation_node_get_type(
const InvestigationNode *node
);
Comportement attendu
Exemple d'utilisation :
InvestigationNode *node = NULL;
node = investigation_node_new(
"01_Preuves_Originales",
INVESTIGATION_NODE_DIRECTORY
);
if (node == NULL)
{
/* Gestion de l'erreur */
}
const char *name = investigation_node_get_name(node);
InvestigationNodeType type = investigation_node_get_type(node);
investigation_node_free(node);
Cas à gérer
- nom valide ;
- nom vide ;
- pointeur
NULL; - type dossier ;
- type fichier ;
- libération avec
NULL.
Contraintes techniques
- C17 ;
- structure opaque ;
- aucun état global ;
- aucune dépendance GTK ;
- documentation Doxygen ;
- compilation sans warning ;
- noms conformes à
DEVELOPMENT.md.
Critères d'acceptation
- Le projet compile sans warning.
- La structure
InvestigationNodeest opaque. - Un nœud peut représenter un fichier.
- Un nœud peut représenter un dossier.
- Le nom est copié et possédé par le nœud.
- Les getters retournent des données en lecture seule.
investigation_node_free(NULL)est accepté.- Aucun code GTK.
- Aucun code SQLite.
- Les fonctions publiques sont documentées avec Doxygen.
Tests
- créer un nœud dossier ;
- créer un nœud fichier ;
- lire le nom ;
- lire le type ;
- tester un nom vide ;
- tester un nom
NULL; - libérer un nœud valide ;
- appeler
investigation_node_free(NULL).
Commit attendu
feat(core): create investigation node