2.6 KiB
2.6 KiB
Ticket #008
Titre
Créer le module InvestigationTreeModel.
Objectif
Créer une structure métier représentant le modèle de l'arborescence d'une enquête.
Le modèle sera propriétaire du nœud racine et servira de base au futur explorateur d'enquête.
Responsabilités
Le module InvestigationTreeModel doit :
- posséder un nœud racine ;
- gérer le cycle de vie du modèle ;
- exposer le nœud racine en lecture seule.
Hors périmètre
Ce ticket ne doit pas :
- parcourir le système de fichiers ;
- créer les enfants d'un nœud ;
- afficher une interface GTK ;
- communiquer avec SQLite ;
- charger une enquête.
Architecture
Investigation
│
▼
InvestigationTreeModel
│
▼
InvestigationNode
Le module appartient à la couche Core.
Aucune dépendance vers GTK.
Principe de propriété
Le module est propriétaire du nœud racine.
À partir du moment où un InvestigationNode est transmis au constructeur :
investigation_tree_model_new(root_node);
le modèle devient responsable de sa destruction.
Le code appelant ne doit plus appeler :
investigation_node_free(root_node);
La destruction du modèle doit automatiquement détruire son nœud racine.
Fichiers concernés
include/core/investigation_tree_model.h
src/core/investigation_tree_model.c
Interface publique attendue
InvestigationTreeModel *investigation_tree_model_new(
InvestigationNode *root_node
);
void investigation_tree_model_free(
InvestigationTreeModel *tree_model
);
const InvestigationNode *investigation_tree_model_get_root(
const InvestigationTreeModel *tree_model
);
Comportement attendu
Le modèle contient uniquement un nœud racine.
Exemple :
Template
Les enfants seront ajoutés dans un ticket ultérieur.
Contraintes techniques
- C17
- Structure opaque
- Aucun état global
- Aucune dépendance GTK
- Documentation Doxygen
- Compilation sans warning
- Respect des conventions du projet
Critères d'acceptation
- Le projet compile sans warning.
- Le modèle est opaque.
- Le modèle possède un nœud racine.
- Le getter retourne le nœud racine.
- La destruction du modèle détruit également le nœud racine.
- Aucun code GTK.
- Aucun code SQLite.
Tests
- création d'un modèle valide ;
- lecture du nœud racine ;
- destruction du modèle ;
- création avec un nœud NULL ;
- destruction avec NULL.
Commit attendu
feat(core): create investigation tree model