Pour diverses énumérations
char* DescriptorSubclassToChar(UserDescriptorId);
CONSTANT=1 --> la chaîne "CONSTANT"
VARIABLE=2 --> la chaîne "VARIABLE"
char* ValueTypeToChar(ValueTypeId id);
VOID=0 --> la chaîne "VOID",
BOOLEAN=1 --> la chaîne "BOOLEAN", etc.
char* ObjectClassToChar(ObjectClassId id);
BD_BASIC_ENTITY=0 --> la chaîne "BD_BASIC_ENTITY",
BD_DESCRIPTED_ENTITY=1 --> la chaîne "BD_DESCRIPTED_ENTITY"; etc.
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 BD_ENTITY, de valeur %d s'affiche '%s'", BD_ENTITY, ClassIdToCharTab(BD_ENTITY));>> Le symbole de classe BD_ENTITY, de valeur 2 s'affiche 'BD_ENTITY'Ce sont les fonctions prédéfinies MakeClassIdToCharTab, MakeDescIdToCharTab, MakeMethodIdToCharTab et MakeArgumentIdToCharTab qui "remplissent" ces tableaux pour la couche 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 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<11;k++) // le premier entier est 11 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 11 s'affiche 'ID_A'