1
2Quelques indications pour faciliter les modifications de structure
3du graphe.
4
5------------------------------------------------------------------------------
6I - Changement du num�ro de version
7------------------------------------------------------------------------------
8
9Pour changer le num�ro de version du fichier ".graph" utilis�
10par tous les outils :
11
12    graph.h
13	ajouter � la suite des #define VERSIONxx
14		#define	VERSIONyy	yy
15
16    binread.c
17	sortir une erreur pour le cas actuel, et ajouter un nouveau
18	cas reprenant (avec modifications �ventuelles) l'ancien
19	code.
20
21    binwrite.c
22	changer la variable hdr (struct graphhdr) pour changer
23	VERSIONxx et VERSIONyy.
24
25------------------------------------------------------------------------------
26II - Ajout d'un attribut simple
27------------------------------------------------------------------------------
28
29Pour ajouter un attribut simple (mono-valu�) � un objet existant :
30
31    Cet attribut sera soit une valeur scalaire (entier par exemple),
32    soit un pointeur. Dans ce cas, soit c'est une cha�ne (i.e. un
33    pointeur dans la table des symboles) soit une r�f�rence � une
34    autre structure.
35
36    Premi�re action : changer le num�ro de version du fichier
37    ".graph". Voir ci-dessus.
38
39    graph.h
40	modifier la structure correspondante.
41
42    textread.c
43	modifier la fonction process_xxx() correspondante, en
44	ajoutant le nom de l'attribut textuel attendu dans la
45	variable de type "struct attrcheck []", et en compl�tant
46	le code existant.
47
48	si le nom de l'attribut textuel est nouveau, ne pas oublier
49	de l'ajouter dans la fonction parse_attr(), avec le nombre
50	de param�tres associ�s.
51
52    textwrite.c
53	ajouter l'affichage de l'attribut au bon endroit.
54
55    absrel.c
56	si l'attribut est un pointeur, il faut convertir l'adresse
57	en index lors de bin_write(). Pour ce faire, ajouter le code
58	de conversion ABSTOREL() dans ce fichier.
59
60    relabs.c
61	idem absrel.c, dans l'autre sens (bin_read() et RELTOABS()).
62
63    dupgraph.c
64	toujours si l'attribut est un pointeur, il faut le mettre
65	� jour apr�s une copie du graphe en m�moire. Il faut donc
66	ajouter le code TRANSPTR() dans la fonction dup_all_mobj().
67
68------------------------------------------------------------------------------
69III - Ajout d'un attribut complexe ou d'un nouvel objet
70------------------------------------------------------------------------------
71
72L'ajout d'un attribut complexe (multi-valu�) � un objet existant
73correspond � l'ajout d'un attribut simple (cas pr�c�dent), mais
74la valeur correspondante sera le plus souvent la t�te d'une liste
75vers de nouveaux objets.
76
77Pour ajouter un nouvel objet :
78
79    Premi�re action : changer le num�ro de version du fichier
80    ".graph". Voir ci-dessus (I-).
81
82    graph.h
83	ajouter la nouvelle structure. Appelons-la "struct xxx"
84
85	ajouter #define XXXMOBJIDX
86	ajouter #define xxxmobj
87	changer #define NB_MOBJ
88
89	adapter les r�f�rences (i.e. si une structure existante
90	doit faire r�f�rence � la nouvelle struct xxx).
91
92    textread.c
93	ajouter �ventuellement une fonction
94	    struct xxx *create_xxx (...)
95
96	ajouter le code pour traiter la cr�ation d'une struct xxx
97
98	ajouter le code pour initialiser le nouveau mobj dans la
99	fonction text_read().
100
101    textwrite.c
102	ajouter le code pour afficher les struct xxx
103
104    absrel.c
105	ajouter un bloc pour convertir l'adresse en index lors
106	de bin_write().
107
108    relabs.c
109	idem absrel.c, dans l'autre sens (bin_read()).
110
111    dupgraph.c
112	ajouter le code pour r�aliser la copie de cette structure.
113	Pour ce faire, il faut partir des r�f�rences � cette nouvelle
114	structure. Pour donner un exemple, les SSID ne sont r�f�renc�s
115	que par les noeuds de type L1. Il faut donc parcourir tous les
116	L1 pour pouvoir dupliquer les SSID. Attention : il y a deux
117	passes dans la fonction.
118