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