- Directive d'inclusion : include UserTypes.h
Le présent chapitre décrit des structures non prédéfinies dans DIESE, et que l'utilisateur doit définir lui-même en même temps qu'il crée des sous-classes des classes génériques Entity, Descriptor, Method, Argument, Process, Event et File.
Il s'agit des énumérations exhaustive des symboles attachés aux différentes sous-classes du domaine. Ces structures sont exploitées par un certain nombre de méthodes qui vont être présentées dans les chapitres relatifs aux différentes classes d'objets. Les items des énumérations données dans les pages accessibles par les liens ci-dessus ne sont que des exemples qui doivent être remplacés par ceux de l'application de l'utilisateur.
Noter que l'ordre des items dans l'énumération est sans importance, de même que les nombres entiers qui leurs sont équivalents (sauf mention contraire dans ce qui suit). Ces nombres n'ont à être fournis que si l'utilisateur y voit pour lui-même un intérêt quelconque. En particulier, certains messages envoyés (par DIESE ou par les fonctions écrites par l'utilisateur) sur la sortie standard peuvent contenir le nombre entier correspondant à un symbole. Une numérotation mnémotechnique des symboles peut alors être utile.
Les identificateurs des énumérations sont libres mais, dans UserTypes.h, on utilisera typiquement App_ClassId pour l'énumération des symboles de classes d'entités. L'essentiel est dans l'équivalence entre les symboles et les entiers implicites ou explicites.
Noter que DIESE fournit des service de correspondance entre symboles et valeurs entières :
- La variable globale ClassIdToCharTab est destinée à recevoir, en la position d'indice X, la chaîne de caractères du symbole dont l'entier correspondant est X. Il suffit alors de compléter ce tableau avec les chaînes de caractères des symboles de classes des entités de l'application. On dit 'compléter', parce que la couche BASIC DIESE remplit ce tableau pour les classes d'entités qui y sont déclarées.
- La variable globale DescIdToCharTab a le même usage pour les classes de descripteurs.
- La variable globale MethodIdToCharTab a le même usage pour les classes de méthodes.
- La variable globale ArgumentIdToCharTab a le même usage pour les classes d'arguments.
Ainsi, on pourra écrire :
void App_MakeClassIdToCharTab() { for(int k=gClassIdToCharTabSize;k<401;k++) ClassIdToCharTab.push_back("@"); ClassIdToCharTab.push_back("AGRO_CLIMATIC_SYSTEM"); ClassIdToCharTab.push_back("AIR_ASSISTED_SPRAYER"); ... } printf("\nLe symbole correspondant à l'entier %d est '%s'.", AGRO_CLIMATIC_SYSTEM, ClassIdToCharTab(401));>> Le symbole correspondant à l'entier 401 est 'AGRO_CLIMATIC_SYSTEM'.