===== Commit 2008-05-14 ===== * Gestion de la mémoire par référence comptées (RefCounted) ===== Modifs ===== * **''NumberedObject'' dérive de ''RefCounted'' ** * Suppression de la commande ''numberObjectSet.copy(nobj)'' au profit de ''numberObjectSet.add(nobj)''. Le nombre de ref est incrémenté à chaque fois que le pointeur est copié et décrémenté à chauqe fois que le pointeur est relaché. * Les objets Python sont eux aussi gérés par le processus incRef DecRef (dans les .i. Voir [[04_08|commit du 8 Avril]]) * ''safeCopy'' est remplacé par ''safeAdd'' * Tous les objets dérivant de ''refCounted'' et conservés doivent dorénavant être alloués (à l'aide de new). Sans quoi ils vont être détruits à l'insu du plein gré du programmateur ... * les copy en interne (lorsqu'il est nécessaire d'avoir un nouvel objet) sont remplacés par la succession de la création de la copie à l'aide d'un ''getClone'' et ensuite de l'ajout au ''set'' * OLD : Side &newObj = getTopology().getSideSet().copy(s); * NEW : Side &newObj = getTopology().getSideSet().add(*s.getClone()); * **Gestion de memoire d'objets Python** * Un certain nombre d'objets Python perduraient via la technique ''DISOWN''. La gestion mémoire de ces objets a été remplacée par l'utilisateion de ''incRef'', ''decRef'' dans les .i (voir [[04_08|commit du 8 Avril]]). Objets en question : * ''mtALE::AleMethod'' * ''mtALE::PostStep'' * ''mtFEM::ValueExtractor'' * ''mtFEMBase::ElementProperties'' * ''mtGeo::Axe'' * ''mtMath::FunctionBase'' * Ajout des ''incRef'' & ''decRef'' dans les fonctions où cela devient nécessaire * **Restructuration de ''ValuesManager''** * La gestion des vecteurs & matrices de stoquage des valeurs utilisés par le ''ValuesManager'' était pour le moins pas claire : les vecteurs étaient alloués dans le ''ValuesManager'', pointeur stoqués à la fois dans le ''DataVectorSet'' de ''Metafor'' et dans chaque ''ValuesStruct'' et objets détruits par le ''DataVectorSet'' * => Suppression du ''DataVectorSet'' de Metafor (double stoquage inutile) * => ''ValuesManager'' devient une ''std::map'' * => allocation du ''VectorOnFile'' dans le ''ValuesManager'' * => stoquage - gestion mémoire & destruction dans ''ValuesStruct'' * => Ajout de la fonction ''ValuesManager.getDataVector(no)'' pour créer des courbes dans l'interface python. * => Suppression du ''DataCurveSet'' de ''Metafor'' (jamais utilisé) ===== Futur Works ===== * Utilisation de ces modifs pour appliquer les loadings via Operateurs Geometriques (but initial de la manoeuvre) * Vérifier que lorsque l'on fait une copie dans un set on a vraiment besoin d'une copie (ALE) ===== Tests ===== * 80% modifiés !!! * STP2E modifié !!! pour ceux qui utilisent mes libs, j'ai inclus le fichier dans les libs (LibsVs2005_080509.rar sur le ftp de Romain) et juste l'"exe" dans le même repertoire (stp2e_080509.rar)... * Correction de aube3 & aube3LineSearch (extraction d'energie sur rien !!!) ===== Projet ===== * up to date ===== ToDo list ===== * finir la modif de ''ValuesManager'' (le numéro de l'extracteur) est stoqué à la fois dans le valuesManager & dans le vectorOnFile (pas fait déjà trop de modifs en cours) * gestion des ''set'' par objets de la STL ===== Fichiers ajoutés/supprimés ===== A R --- //[[L.Papeleux@ulg.ac.be|Luc PAPELEUX]] 2008/05/14 //