Rien

- Nettoyage de diverses classes (Analysis, StateActivatorSet, State, etc).
- Suppression de code commentarisé dans les précédents commits.
- Création de .inl
- Nettoyage de forme avec PowerGrep (suppression des tabs, espaces en trop en fin de ligne, etc)
- Ajout du mot clef explicit pour les constructeurs de Matr2 et Matr3. il est devenu impossible de caster une Matr3 en Matr2 implicitement (peut-être moins optimisé mais beaucoup plus sûr).
- Templatisation des classes MaterialIDList, MaterialLawIDList et ElementIDList (template IDListTemplate). On en rêvait; c'est fait. Rajouter une liste d'ID revient donc à instancier le template IDListTemplate. En bref, une belle chiée de code dupliqué en moins.
- Changement de nom : PropertyList => PropertyIDList => IDListTemplate<T> (voir figure ci-dessous)
- Remplacement progressif des valeurs d'enums par des objets (statiques ET uniques):
Pourquoi faire ça me direz vous? Simplement parce qu'un objet est mieux typé qu'une valeur d'énum. De plus, on peut stocker beaucoup de choses supplémentaires dans l'objet (comme par exemple une string qui facilite le debug ou l'interfacage avec python). Enfin, il n'est pas possible d'enrichir une enum (une enum est définie dans un seul fichier d'entête). Cette évolution nous amènera au "PhySets dynamiques" très bientôt!
- Création de IDBase (voir figure ci-dessous), un template très utile qui est la base des IDs (un ID est un objet qui remplace une valeur d'enum).
- Suppression de la possibilité de copier les IDs (constructeurs par copie privés). Il faut donc obligatoirement utiliser des références.
- Modification de PropertyID pour être identique à MaterialID, ElementID, etc
- Les propriétés sont typées : PropertyID devient PropertyID<MaterialID>, PropertyID<ElementID> et PropertyID<MaterialLawID>. Plus possible, donc, d'assigner un module de young à un élément ou une épaisseur à un matériau.
- Les listes de propriétés sont des instances d'un template : par exemple PropMater devient Properties<MaterialID>


Fichiers ajoutés/supprimés:
R oeKernel/oePropertyID.cpp
R oeKernel/oePropertyList.cpp
R oeKernel/oePropertyList.h
A oeKernel/oeElementPropertyID.h
A oeKernel/oeIDBase.h
A oeKernel/oeIDBase.inl
A oeKernel/oeIDListTemplate.h
A oeKernel/oeIDListTemplate.inl
A oeKernel/oeMaterialPropertyID.h
A oeKernel/oePropertyID.inl
A oeKernel/oePropertyIDList.cpp
A oeKernel/oePropertyIDList.h
A oeKernel/oeTypeStr.inl
- Création de Singleton<T> comme classe de base de tous les singletons.
- Nouveaux noms:
- TdFieldEntry => TdFieldID
- TdFieldData => TdFieldIDList
- PhysetEntry => PhySetID
- PhysetData => PhySetIDList
- InternalFieldEntry => InternalFieldID
- InternalFieldData => InternalFieldIDList
- Nouveau système de licences (restrictions sur les capacités du code):
- création des classes License et dérivées : gèrent un type de restriction apporté au code
- SizeOfSetLimitedLicense : donne une taille limite à un set (p. expl. le NodeSet)
- TimeLimitedLicense : définit une date d'expiration de la version
- CPULimitedLicense : définit un temps CPU maximum (vérifié à chaque set_step)
- MACLimitedLicense : définit une adresse physique (de carte réseau - MAC) autorisée. Cette option nécessite de linker avec la lib iphlpapi.lib. Cette licence ne fonctionne que sous Windows.
- création du singleton LicenseManager qui gère les licences. On peut en ajouter par la fonction add (c'est fait actuellement dans main.cpp) et, à tout moment, les vérifier par la fonction check.
- gestion correcte des pas de temps (crasse qui remonte à longtemps): il était en effet impossible de retourner au pas de temps 0. De plus, le pas de temps 1 était le pas de temps 2 d'Oofelie (moins grave mais bon, c'était moche).
- Utilisation de IDBase<> pour OptionID.
NOTE :
n'oubliez pas de linker avec iphlpapi.lib 
Fichiers ajoutés/supprimés:
R mtKernel/InternalFieldData.cpp
R mtKernel/InternalFieldData.h
R mtKernel/InternalFieldEntry.cpp
R mtKernel/InternalFieldEntry.h
R mtKernel/PhysetData.cpp
R mtKernel/PhysetData.h
R mtKernel/PhysetEntry.cpp
R mtKernel/PhysetEntry.h
R mtKernel/TdFieldData.cpp
R mtKernel/TdFieldData.h
R mtKernel/TdFieldEntry.cpp
R mtKernel/TdFieldEntry.h
A mtKernel/InternalFieldID.cpp
A mtKernel/InternalFieldID.h
A mtKernel/InternalFieldIDList.cpp
A mtKernel/InternalFieldIDList.h
A mtKernel/License.cpp
A mtKernel/License.h
A mtKernel/LicenseManager.cpp
A mtKernel/LicenseManager.h
A mtKernel/PhySetID.cpp
A mtKernel/PhySetID.h
A mtKernel/PhySetIDList.cpp
A mtKernel/PhySetIDList.h
A mtKernel/Singleton.h
A mtKernel/Singleton.inl
A mtKernel/TdFieldID.cpp
A mtKernel/TdFieldID.h
A mtKernel/TdFieldIDList.cpp
A mtKernel/TdFieldIDList.h
A mtMaterials/MaterialLawPropertyID.h
A mtMaterials/MaterialLaw.inl
A mtGlobal/OptionIDList.cpp
A mtGlobal/OptionIDList.h