Pour diverses énumérations
char* C_StateIdToString(C_StateId);
SLEEPING=1 --> la chaîne "SLEEPING"
WAITING=2 --> la chaîne "WAITING", etc.
char* C_ContinuationModeToString(C_ContinuationMode id);
NEW_ENTITIES=1 --> la chaîne "NEW_ENTITIES"
SAME_PREVIOUS_ENTITIES=2 --> la chaîne "SAME_PREVIOUS_ENTITIES", etc.
char* C_ProportionalityModeToString(C_ProportionalityMode id);
NON_PROPORTIONAL=1 --> la chaîne "NON_PROPORTIONAL"
PROPORTIONAL=2 --> la chaîne "PROPORTIONAL"char* C_SelectionModeToString(C_SelectionMode id);
ANYONE=1 --> la chaîne "ANYONE"
MAX=2 --> la chaîne "MAX", etc.
char* C_QuantityIdToString(C_QuantityId id);
C_ELEMENTS=0 --> la chaîne "C_ELEMENTS
char* C_GoalIdToString(C_GoalId id);
C_TARGET=0 --> la chaîne "C_TARGET
C_ANTI_TARGET=1 --> la chaîne "C_ANTI_TARGET
char* C_ActivityActionToString(C_ActivityActionMode id);
C_TAKE_MIN=1 --> la chaîne "C_TAKE_MIN"
C_TAKE_MEAN=2 --> la chaîne "C_TAKE_MEAN"
C_TAKE_MAX=3 --> la chaîne "C_TAKE_MAX"
Pour les classes d'entités,...
... de descripteurs, de méthodes et d'arguments, l'utilisateur peut exploiter, respectivement, les variables globales ClassIdToCharTab, DescIdToCharTab, MethodIdToCharTab et ArgumentIdToCharTab. Ce sont des tableaux de chaînes de caractères, contenant, à l'indice <classId> la chaîne correspondante. Par exemple :
printf("\nLe symbole de classe ACTIVITY, de valeur %d s'affiche '%s'", ACTIVITY, ClassIdToCharTab(ACTIVITY));>>Le symbole de classe ACTIVITY, de valeur 11 s'affiche 'ACTIVITY'Ce sont les fonctions prédéfinies C_MakeClassIdToCharTab, C_MakeDescIdToCharTab, C_MakeMethodIdToCharTab et C_MakeArgumentIdToCharTab qui complètent ces tableaux pour la couche CONTROL DIESE, alors qu'ils ont déjà reçu des éléments par la couche BASIC DIESE. Le programmeur d'une application a intérêt à compléter ces tableaux avec les chaînes correspondant aux symboles de classes de l'application. C'est la raison pour laquelle les entiers associés aux symboles doivent être supérieurs à ceux déjà utilisés par la couche CONTROL DIESE (valeur de gClassIdToCharTabSize pour les classes d'entités). A cet effet, l'utilisateur développera des fonctions pouvant être appellées comme ci-dessous :
void App_MakeClassIdToCharTab() { for(int k=gClassIdToCharTabSize;k<201;k++) // le premier entier est 201 ClassIdToCharTab.push_back("@"); ClassIdToCharTab.push_back("ID_A"); ClassIdToCharTab.push_back("ID_B"); ClassIdToCharTab.push_back("ID_A_ELEM"); ClassIdToCharTab.push_back("ID_SET_OF_A"); .... } void App_MakeDescIdToCharTab() {...}; void App_MakeMethodIdToCharTab() {...}; void App_MakeArgumentIdToCharTab() {...};Ainsi :
printf("\nLe symbole de classe ID_A, de valeur %d s'affiche '%s'", ID_A, ClassIdToCharTab(ID_A));>>Le symbole de classe ID_A, de valeur 201 s'affiche 'ID_A'