commit:2007:03_08
Table of Contents
Commit 2007-03-08
Modifs
- Correction de Bugs:
- La visu fonctionne sur calimero: il s'agissait d'un problème d'index dans les tables de hashage (visiblement, quand calimero lance la visu, il alloue des pointeurs qui ne peuvent pas être représenté par un nombre signé sur 4 octets. J'ai utilisé une conversion en
size_t
qui est beaucoup plus propre. - Le bug précédent m'a poussé à réactiver certains warnings (désactivés par
pragma
). En effet, si j'avais pas désactivé les warnings relatifs à la perte de données par conversion implicite, j'aurais trouvé le bug tout de suite. J'ai donc réactivé certains warnings et j'ai modifié le code problématique. J'ai supprimé les pragma relatifs aux warnings VC6. Normalement, le code compile presque sans warnings en “level 3” (il en reste juste dans les fichierswrap
générés par SWIG). - Les nouvelles architectures 64 bits poussent les programmeurs à vérifier la taille des index de leurs tableaux puisque l'indexation
int
restera codée sur 32 bits (plutôt 31 vu le bit de signe) en 64 bits. L'idéal est donc d'indexer ses tableaux avec des entiers non signés pouvant balayer toute la mémoire physique des systèmes d'exploitation 64 bits. L'idéal semble d'utiliser le typesize_t
au lieu duint
. Toutes les fonctionssize()
ont été corrigées dans ce sens. En pratique, ça veut dire qu'une boucle sur un vecteur qui s'écrivaitfor(int i=0; i<v.size(); ++i)
s'écritfor(size_t i; i<v.size(); ++i)
ou, encore 100x mieuxfor(std::vector::iterator it=v.begin(); it!=v.end(); ++it)
. Dans ce dernier cas, on ne se tracasse plus des types! Pour vous prouver que je ne suis pas le seul à me tracasser de ce problème, python 2.5 a introduit le typePy_ssize_t
pour les tableaux (ce type n'existe pas en 2.4). J'ai modifié Metafor en conséquence mais le code compile toujours avec python 2.4. - Adaptation de
ElementIterator
pour le vs2005. Il doit dériver obligatoirement destd::iterator
oustd::iterator_traits
pour pouvoir être compatible avec les algorithmes de la STL. A ce propos, l'itérateur actuel ne boucle pas sur les éléments non actifs. C'est pour cela que la boucletoDofSet
n'utilise pas les itérateurs (si c'était le cas, certains éléments, désactivés dès le démarrage, ne sont jamais initialisés. L'idéal serait d'utiliser toujours les itérateurs et de vérifier leur initialisation à l'activation (ce n'a pas été fait). - Metafor ne plante plus si le fichier de licence (
metafor.lic
) n'est pas trouvé! (ça aurait évité un premier plantage Metafor au premier lancement chez GDTech).
Fichiers ajoutés/supprimés
— Romain BOMAN 2007/03/08 08:43
commit/2007/03_08.txt · Last modified: 2016/03/30 15:23 by 127.0.0.1