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

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'

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