D'un élément d'énumération à une chaîne de caractères

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'

This page was generated with the help of DOC++.