X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=src%2FgdcmArgMgr.cxx;h=3ed2d808dca3be955067b6e5e6a923c844774164;hb=17daf7e7caceddf44e73864ee8d366613a1f0c82;hp=96ef10fd29ef0cae3819a075aac7ded83ddd2fdd;hpb=d660de8252252f981699115eac611a8ec0b3ad5f;p=gdcm.git diff --git a/src/gdcmArgMgr.cxx b/src/gdcmArgMgr.cxx index 96ef10fd..3ed2d808 100644 --- a/src/gdcmArgMgr.cxx +++ b/src/gdcmArgMgr.cxx @@ -3,8 +3,8 @@ Program: gdcm Module: $RCSfile: gdcmArgMgr.cxx,v $ Language: C++ - Date: $Date: 2005/06/06 12:37:58 $ - Version: $Revision: 1.1 $ + Date: $Date: 2005/09/20 09:21:35 $ + Version: $Revision: 1.15 $ Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de l'Image). All rights reserved. See Doc/License.txt or @@ -26,10 +26,6 @@ #include "gdcmArgMgr.h" -#define ARG_DEFAULT_PARAMOUT "fileout.par" -#define ARG_DEFAULT_LOGFILE "gdcm.log" - - namespace gdcm { //------------------------------------------------------------------------- @@ -40,7 +36,7 @@ namespace gdcm * @param argc arguments count, as passed to main() * @param argv pointers array on the arguments passed to main() */ - ArgMgr::ArgMgr(int argc, char *argv[]) + ArgMgr::ArgMgr(int argc, char **argv) { int i; int nblettre; @@ -74,7 +70,7 @@ namespace gdcm } } - /* Fills an array with the alreadu used parameters ****/ + /* Fills an array with the already used parameters ****/ ArgUsed = (char *)calloc (1, ArgCount ); /* Builds the full string with all the parameters **************/ @@ -110,50 +106,50 @@ namespace gdcm ArgMgr::~ArgMgr() { for(int i=0;i0; i-- ) + temp = Majuscule ( param ) ; + for ( i = ArgCount-1; i>0; i-- ) { - trouve = ! strcmp( ArgLab[i], temp ) ; + trouve = ( strcmp( ArgLab[i], temp )==0 ) ; if ( trouve ) { ArgUsed[i] = true ; for ( int j=1; j0 ) + { + liste[i] = (uint16_t) strtol ( value, &value, 16 ); + if ( *value == '\0' ) + { + liste[i+1]=liste[i]; + return liste; + } + if ( *(value++) != '-' ) + { + liste[i+1]=liste[i]; + value--; + } + else + { + liste[i+1] = (uint16_t) strtol ( value, &value, 16 ); + } + if ( *value == '\0' ) + return liste; + if ( *(value++) != ',' ) + { + free (liste); + return 0; + } + taille --; i+=2; + } + return liste; +} +/** + * \brief returns an array of 'FLOAT pairs' + * @param value char array decribing a set of 'FLOAT pairs' (f1-l1, f2-l2, ...) + * @param number nb of found pairs + * @return pointer to the array of 'FLOAT pairs'; NULL if fail */ float *ArgMgr::IdStrFloatEnum (char *value, int *number) { float *liste; int taille; int i; - *number = IdStrCountChar(value,',')+1; /* nb Elements = nb Virgules +1 */ + *number = IdStrCountChar(value,',')+1; /* nb Elements = nb Commas +1 */ taille= *number; liste = (float *) calloc (1,sizeof(float)*2*taille ); if ( !liste ) @@ -616,40 +716,6 @@ float *ArgMgr::IdStrFloatEnum (char *value, int *number) return liste; } -/** - * \brief decodage des elements d'un argument 'intervalles d'int' de lgr quelconque - * @param label pointer vers le label de la liste - * @param number taille de la liste d'intervalles trouvee - * @return Pointer vers le tableau de taille '2*nbElem' - * Pointer NULL si erreur - */ -int *ArgMgr::ArgMgrGetIntEnum ( char *label, int *number ) -{ - char *value = ArgMgrValue(label); - int *liste; - if (!value) - return 0; - liste = IdStrIntEnum(value, number); - return liste; -} - -/** - * \brief decodage des elements d'un argument 'intervalles d'int' de lgr quelconque - * @param label pointer vers le label de la liste - * @param number taille de la liste d'intervalles trouvee - * @return Pointer vers le tableau de taille '2*nbElem' - * Pointer NULL si erreur - */ -float *ArgMgr::ArgMgrGetFloatEnum ( char *label, int *number ) -{ - char *value = ArgMgrValue(label); - float *liste; - if (!value) - return 0; - liste = IdStrFloatEnum(value, number); - return liste; -} - //----------------------------------------------------------------------------- // Protected @@ -659,17 +725,17 @@ float *ArgMgr::ArgMgrGetFloatEnum ( char *label, int *number ) /************************************************************************** * * * Nom de la fonction : Majuscule * -* Role ............. : Met une chaine de caracteres en majuscules. * -* parameters ....... : Pointer vers la chaine. * -* Valeur retournee . : pointer vers cette meme chaine en majuscule. * +* Role ............. : Creates a new Upper case char array. * +* parameters ....... : Pointer to the initial char array. * * +* Valeur retournee . : Pointer to the new Upper case char array. * * * **************************************************************************/ -char *ArgMgr::Majuscule (char *chaine ) +char *ArgMgr::Majuscule (const char *chaine ) { char *ptr, *ptr2, *ptr3; ptr2 = (char *)malloc(strlen(chaine)*sizeof(char)+1); ptr3=ptr2; - for ( ptr = chaine ; *ptr!='\0' ; ptr ++ ) + for ( ptr = (char *)chaine ; *ptr!='\0' ; ptr ++ ) { *ptr3 = toupper ( * ptr ); ptr3++; } @@ -680,11 +746,11 @@ char *ArgMgr::Majuscule (char *chaine ) /************************************************************************** * * * Nom de la fonction : FiltreLong * -* Role ............. : Arrete le programme si l'argument est trop long. * -* ARG_LONG_MAX definit cette longueur. * -* parameters ....... : Pointer vers l'argument. * -* Valeur retournee . : Faux s'il n'y a pas d'erreur. * -* Vrai s'il y a une erreur. * +* Role ............. : Stops the program if argument is too long. * +* ARG_LONG_MAX defines max length. * +* parameters ....... : Pointer to the argument. * +* Valeur retournee . : false if OK. * +* true if KO. * **************************************************************************/ int ArgMgr::FiltreLong ( char *arg ) { @@ -694,32 +760,31 @@ int ArgMgr::FiltreLong ( char *arg ) } /*------------------------------------------------------------------------ - | Role : Lit un parameter depuis un fichier - | Retour : Type : char * - | Role : pointer vers le label + | Role : Reads a parameter from a file + | Return : Type : char * + | Role : pointer to the label | parameters : param : char * - | Role : one ou il faut stocker le parameter + | Role : one where the parameter will be stored | fd : FILE * - | Role : descripteur du fichier (suppose ouvert) + | Role : File description (assumed to be open) +------------------------------------------------------------------------*/ -char *ArgMgr::LoadedParam ( char *param, FILE *fd ) +const char *ArgMgr::LoadedParam ( const char *param, FILE *fd ) { int carlu; - char * car = param; + char *car = (char *)param; int quote = false; int nbcar = 0; - /* On supprime les espaces ****/ - /* du debut de chaine *********/ + /* remove spaces at the beginning****/ while ( isspace(carlu=fgetc (fd)) ); if (carlu==EOF) return 0; - /* On cherche une " eventuelle */ + /* Search for a " */ if ( carlu=='\"' ) { carlu=fgetc(fd); quote=true; - /* On lit tous les caracteres */ + /* Read all the characters */ } while ( (carlu!=EOF) && ( ( (!quote)&&(!isspace(carlu)) ) @@ -742,13 +807,12 @@ char *ArgMgr::LoadedParam ( char *param, FILE *fd ) } /*------------------------------------------------------------------------ - | Role : Lecture d'arguments dans un fichier de parameters - | (cette fonction est recursive). - | Retour : Type : int - | Role : retourne le nombre de lettres necessaires - | pour stocker en memoire tous les parameters + | Role : Reading of arguments in a parameter file + | (this function is recursive). + | Return : Type : int + | Role : length needed to store all the parameters | parameters : filename : char * - | Role : nom du fichier de parameter + | Role : parameter File name | +------------------------------------------------------------------------*/ int ArgMgr::ArgLoadFromFile ( char *filename ) @@ -779,21 +843,21 @@ int ArgMgr::ArgLoadFromFile ( char *filename ) } /*------------------------------------------------------------------------ - | Role : Gestion des parameters standard de la ligne d'argument. - | Retour : Type : void - | parameters : aucun + | Role : Standard parameters management (on command line) + | Return : Type : void + | parameters : none +------------------------------------------------------------------------*/ void ArgMgr::ArgStdArgs() { char *logfile; FILE *fd; - if ( (ArgParamOut=ArgMgrValue(ARG_LABEL_PARAMOUT))==0 ) + if ( (ArgParamOut=ArgMgrValue((char*)ARG_LABEL_PARAMOUT))==0 ) ArgParamOut = ARG_DEFAULT_PARAMOUT; - if ( (logfile = ArgMgrValue(ARG_LABEL_LOGFILE))!=0) + if ( (logfile = ArgMgrValue((char*)ARG_LABEL_LOGFILE))!=0) { if ( *logfile == '\0' ) - logfile = ARG_DEFAULT_LOGFILE; + logfile = (char *)ARG_DEFAULT_LOGFILE; fd = fopen ( logfile, "a+" ); if ( fd ) { @@ -804,8 +868,8 @@ void ArgMgr::ArgStdArgs() } /*------------------------------------------------------------------------ - | Role : met en majuscule 'sur place'. - | Retour : Type : char * + | Role : Sets in Upper Case. + | Return : Type : char * | parameters : char * +------------------------------------------------------------------------*/ char *ArgMgr::maj ( char *a )