====== Commit 2007-11-29 ======
===== Modifs =====
==== FAC ====
=== Nouvelles streams ===
* réécriture des FACs binaire et texte avec les fstreams. Cela permet d'assouplir le format texte et d'éviter de mélanger les bibliothèques. De plus, la lecture C++ est plus sécurisée (pas de buffer de taille arbitraire).
* Nettoyage du format XML.
* Ajout d'une entête XML au format texte: plus besoinde Bonfire Studio pour voir une arborescence: EditPad suffit.
A améliorer:
* les enregistrements XML doivent être séparés au minimum par un espace: ''13'' n'est pas lisible par Metafor (mais bien par un parser XML).
* les strings ne peuvent contenir qu'un seul mot en mode texte! (mode binaire OK)
* les FACs calimero devraient être incompatibles avec les autres car sur calimero, ''size_t'' est codé sur 4 octets (8 sur les autres machines).
==== Création dynamique d'objets ====
Le but est de pouvoir à terme charger des ensembles dont la taille peut varier. Par exemple, charger un ensemble de 100 éléments "sur" un ensemble de 500 éléments. La différence pouvant provenir par exemple d'un remaillage ou d'une désactivation par critère de rupture.
Pour tester une méthode, j'ai travaillé sur ''OptionSet'' et ''Option'' (c'est plus simple que ''ElementSet'' et ''Element''). Ces options sont par exemple utilisées dans la visu et sont sauvées dans le fichier ''vizwin.conf''. Ca donne ceci:
13
137
VO_AMBIENTLIGHT 1
VO_AMBIENTLIGHTINTENSITY 0.33
VO_AUTOSCALEVECTORS 0
VO_AXES 0
VO_AXESCLOSESTTRIAD 0
VO_AXESFONTSIZE 1
VO_AXESNUMBEROFLABELS 5
VO_AXESSCALING 0
...
La difficulté est qu'on ne connait pas le type des options lorsqu'on charge l'ensemble des options. Il n'est donc pas possible de boucler sur les options actuelles et d'appeler une fonction virtuelle du genre ''load''. En effet le nombre d'option peut avoir changé ou elles peuvent être rangées dans un autre ordre.
Pour s'en sortir, il faut donc charger le type de l'option, créer une option du bon type et lui demander qu'elle se charge. En résumé, il s'agit de créer dans la classe ''Option'' un constructeur virtuel à partir d'un objet ''Archive''. La méthode est expliquée sur le net à [[http://www.parashift.com/c++-faq-lite/serialization.html|cette adresse]]. Elle est très similaire à ce qu'Igor à fait pour les éléments, les matériaux, etc.
Ce type de méthode sera intégré prochainement aux identificateurs d'éléments (qui servent déjà à initialiser et construire les éléments finis) pour permettre d'ajouter et supprimer des éléments.
==== Correction bugs ====
* Nouveau splash screen (transparent) qui devrait fonctionner sous Unix.
* La fenêtre de commande ne descend plus entre 2 runs successifs de Metafor.
==== Nettoyage 64 bits ====
* Les courbes sur disque utilisent des index 64 bits non signés (''size_t'') si disponibles.
* UserNo est non signé en interne => un numero "invalide" = 0 (et non plus -1)
==== Nettoyage ====
* ''MetaError'' => ''RuntimeError''
* déplacement de ''BadProjection'' dans ''mtGeo''.
* Suppression Warnings pour fichiers non Unicode. j'ai enregistré un fichier possédant un caractère accentué au format Unicode avec le Visual.
==== Licence ====
* J'ai splitté le fichier ''License'' et j'ai retravaillé la classe ''MACLimitedLicense'' pour qu'elle affiche les adresses MAC de la machine lorsqu'une mauvaise licence est trouvée.
===== Fichiers ajoutés/supprimés ======
mtGlobal/RuntimeError.cpp added (+)
mtKernel/CPULimitedLicense.cpp added
mtKernel/MACAddress.cpp added
mtKernel/MACLimitedLicense.cpp added
mtKernel/SizeOfSetLimitedLicense.cpp added
mtKernel/TimeLimitedLicense.cpp added
mtGlobal/RuntimeError.h added (+)
mtKernel/CPULimitedLicense.h added
mtKernel/MACAddress.h added
mtKernel/MACLimitedLicense.h added
mtKernel/SizeOfSetLimitedLicense.h added
mtKernel/TimeLimitedLicense.h added
toolbox/clean_splash.py added
clean.pyw added (+)
mtGlobal/MetaError.cpp deleted
mtGlobal/MetaError.h deleted
clean.py deleted
--- //[[r_boman@yahoo.fr|Romain BOMAN]] 2007/11/29 10:40//