Interprétation des arguments de la commande de simulation


o C_ParseMainArguments
Interprète les arguments de la commande exécutable.
La commande d'exécution du simulateur (./main ...) possède des arguments, pour spécifier des données en entrée et préciser des options d'exécution.

DIESE prédéfinit quelques arguments standards et propose, par la fonction ParseMainArguments, un moyen d'interpréter leurs valeurs dans la ligne de commande. Par rapport à un développement sous BASIC DIESE, la commande d'exécution d'un simulateur développé sous CONTROL DIESE , comprend les même arguments obligatoires et peut comprendre les mêmes arguments optionnels (voir à ce sujet la documentation de BASIC DIESE, page 'Fonctions globales / Interprétation des arguments de la commande').

Au-delà, la ligne de commande sous CONTROL DIESE peut contenir des arguments nouveaux, que ParseMainArguments ne sait interpréter. CONTROL DIESE fournit donc la fonction C_ParseMainArguments qui invoque ParseMainArguments avant de rechercher dans la ligne de commande la présence éventuelle des arguments propres à CONTROL DIESE.

Au-delà encore, et comme dans un développement avec BASIC DIESE, l'application propose généralement des options d'exécution particulière au domaine étudié. La mise en jeu de ces options est opérée par une fonction, qu'on peut appeler App_ParseMainArgument, dont le principe de codage est exposé dans la documentation de BASIC DIESE. Cette fonction doit invoquer C_ParseMainArguments en son début :

int main (int argc, char* argv[]) {
  App_ParseMainArguments(argc, argv);
  ...
};

void App_ParseMainArguments (int argc, char* argv[]) {
//---------------------------------------------
  Boolean stdArgs_ok = C_ParseMainArguments(argc, argv);

  if(stdArgs_ok)  {
	for (int i=6;i<argc;i++) {
	  if (!strcmp(argv[i], "-w"))
		gMyTraceWarnings  = TRUE;
	  if (!strcmp(argv[i], "-o"))
		gMyTraceOperations  = TRUE;
	}
  }
}

Rôle de C_ParseMainArguments

Dans sa version courante, C_ParseMainArguments teste la présence dans la ligne de commande des arguments suivants, et donne le cas échéant la valeur mentionnée aux variables globales correspondantes :

    -RscWarn          gTraceResourceWarnings  TRACE_RSC_WARN_ON
    -ActWarn          gTraceActivityWarnings  TRACE_ACT_WARN_ON
    -USO              gUpperSubsetOption      setSize | maxSpecAllocSize
    -ActSet n         gActSetSizeUpperBound   n
    -LogUPS lb[-ub]   g_CD_logUPS_begClock    lb
                      g_CD_logUPS_endClock    ub
    -ActLog           gTraceActivityLogs      TRUE
    -LogMIL lb[-ub]   g_CD_logMIL_begClock    lb
                      g_CD_logMIL_endClock    ub
    -LogMIL+ lb[-ub]  g_CD_logMILp_begClock   lb
                      g_CD_logMILp_endClock   ub
    -LogAIL lb[-ub]   g_CD_logAIL_begClock    lb
                      g_CD_logAIL_endClock    ub
    -LogESA lb[-ub]   g_CD_logESA_begClock    lb
                      g_CD_logESA_endClock    ub
    -LogESA+ lb[-ub]  g_CD_logESAp_begClock   lb
                      g_CD_logESAp_endClock   ub
Si la ligne de commande est main -h, le résultat est l'affichage de la manière d'invoquer la commande, avec un rappel du sens des arguments obligatoires et optionnels.

Les autres arguments reconnus, parmi ceux à partir du rang 6, sont les suivants (on rappelle que l'argument de rang 0 est le module exécutable lui-même, et que les arguments de rang 1 à 5 sont les fichiers d'entrée standard) :


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