Program: gdcm
Module: $RCSfile: gdcmArgMgr.cxx,v $
Language: C++
- Date: $Date: 2005/06/08 08:06:55 $
- Version: $Revision: 1.3 $
+ Date: $Date: 2005/06/22 08:11:23 $
+ Version: $Revision: 1.10 $
Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de
l'Image). All rights reserved. See Doc/License.txt or
#include "gdcmArgMgr.h"
-#define ARG_DEFAULT_PARAMOUT "fileout.par"
-#define ARG_DEFAULT_LOGFILE "gdcm.log"
-
-
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;
ArgMgr::~ArgMgr()
{
for(int i=0;i<ArgCount;i++)
- if(ArgLab[i])
+ if ( ArgLab[i] )
free(ArgLab[i]);
- if(ArgUsed)
+ if ( ArgUsed )
free(ArgUsed);
- if(Appel)
+ if ( Appel )
free(Appel);
}
/**
* \brief checks if a parameter exists in the command line
- * @param searchParam label name
+ * @param param label name
* @return true if parameter 'label' exists
* Actually, it returns 0 if label is not found
* else, returns the number of the spot it was found last time.
*/
-int ArgMgr::ArgMgrDefined( char *searchParam )
+int ArgMgr::ArgMgrDefined( const char *param )
{
int i, trouve ;
char *temp;
- temp = Majuscule ( searchParam ) ;
+ temp = Majuscule ( param ) ;
for ( trouve = false, i = ArgCount-1; i>0; i-- )
{
trouve = ! strcmp( ArgLab[i], temp ) ;
* @return Value, as a characters string, of the parameter
* whose label is given.
*/
-char *ArgMgr::ArgMgrValue ( char *param )
+char *ArgMgr::ArgMgrValue ( const char *param )
{
int trouve ;
if ( (trouve = ArgMgrDefined ( param )) != false )
* @param usage array of pointers to the documentation lines of the program.
* @return exception code
*/
-int ArgMgr::ArgMgrUsage(char **usage_text )
+int ArgMgr::ArgMgrUsage(const char **usage )
{
- while ( *usage_text )
- std::cout << std::endl << *(usage_text++);
+ while ( *usage )
+ std::cout << std::endl << *(usage++);
std::cout << std::endl;
return (0);
}
FILE *fd;
if ( *ArgParamOut == '\0' )
return 0;
- if(deja)
+ if ( deja )
{
fd = fopen ( ArgParamOut, "a+" );
}
* @param defaultVal default value
* @return parameter value
*/
-int ArgMgr::ArgMgrGetInt(char *label, int defaultVal)
+int ArgMgr::ArgMgrGetInt(const char *label, int defaultVal)
{
return ( (ArgMgrDefined(label))
? (atoi(ArgMgrValue(label)))
* \brief Gets a float value passed as an argument to a program
* (use default value if not found)
* EXEMPLE: float scale = ArgMgrGetFloat ( "SCALE", 0.33 );
- * @param label label name
+ * @param param label name
* @param defaultVal default value
* @return parameter value
*/
-float ArgMgr::ArgMgrGetFloat(char *label, float defaultVal)
+float ArgMgr::ArgMgrGetFloat(const char *param, float defaultVal)
{
- return ( (ArgMgrDefined(label))
- ? ((float)atof(ArgMgrValue(label)))
+ return ( (ArgMgrDefined(param))
+ ? ((float)atof(ArgMgrValue(param)))
: (defaultVal) );
}
/**
* \brief Gets a 'string' value passed as an argument to a program
* (use default value if not found)
- * @param label label name
+ * @param param label name
* @param defaultVal default value
* @return parameter value
*/
-char *ArgMgr::ArgMgrGetString(char *label, char *defaultVal)
+char *ArgMgr::ArgMgrGetString(const char *param, char *defaultVal)
{
- return ( (ArgMgrDefined(label))
- ? (ArgMgrValue(label))
+ return ( (ArgMgrDefined(param))
+ ? (ArgMgrValue(param))
: (defaultVal) );
}
* \brief Gets a value amongst a set of values
* (use default value if not found)
* EXEMPLE: int nlab = ArgMgrGetLabel("CONFIRM","NO\\YES", 0);
- * @param label label name
+ * @param param label name
* @param liste character Chain describing the various values.
* Value are separated by '\\'.
* Not case sensitive.
* @param val number of default value
* @return int : range of value amongst the values list
*/
-int ArgMgr::ArgMgrGetLabel (char *label, char *liste, int val )
+int ArgMgr::ArgMgrGetLabel (const char *param, char *liste, int val )
{
char *lab;
char *vallab;
tmp = (char *) malloc(strlen(liste)+1);
strcpy(tmp,liste);
- if ( (vallab = ArgMgrGetString(label,(char *)NULL)) != 0 )
+ if ( (vallab = ArgMgrGetString(param,(char *)NULL)) != 0 )
{
for ( lab = strtok (tmp,"\\");
lab != 0;
/**
* \brief Demands a value amongst a set of values (abort if not found)
* EXEMPLE: int nlab = ArgMgrWantLabel("CONFIRM","NO\\YES", usage);
- * @param label label name
+ * @param param label name
* @param liste character Chain describing the various values.
* Labels are separated by '\\'.
* No case sensitive.
* @param usage Usage program (displayed if label not found)
* @return int : range of value amongst the values list
*/
-int ArgMgr::ArgMgrWantLabel (char *label, char *liste, char *usage[] )
+int ArgMgr::ArgMgrWantLabel (const char *param, char *liste, const char **usage )
{
char *lab;
char *vallab;
int i = 1;
- if ( (vallab = ArgMgrGetString(label,0)) != 0 )
+ if ( (vallab = ArgMgrGetString(param,0)) != 0 )
{
for ( lab = strtok (liste,"\\"); lab != 0; lab = strtok(0L,"\\"), i++ )
if ( strcmp(maj(lab),maj(vallab))==0)
* @param usage Usage program (displayed if label not found)
* @return parameter value
*/
-int ArgMgr::ArgMgrWantInt (char *label, char **usage)
+int ArgMgr::ArgMgrWantInt (const char *label, const char **usage)
{
return ( (ArgMgrDefined(label) )
? (atoi(ArgMgrValue(label) ) )
* @param usage Usage program (displayed if label not found)
* @return parameter value
*/
-float ArgMgr::ArgMgrWantFloat (char *label, char **usage)
+float ArgMgr::ArgMgrWantFloat (const char *label, const char **usage)
{
return ( (ArgMgrDefined(label) )
? ((float)atof(ArgMgrValue(label) ) )
- : (ArgMgrUsage(usage),1.0) );
+ : (ArgMgrUsage(usage),(float)1.0) );
}
/**
* @param usage Usage program (displayed if label not found)
* @return parameter value
*/
-char *ArgMgr::ArgMgrWantString(char *label, char **usage)
+char *ArgMgr::ArgMgrWantString(const char *label, const char **usage)
{
return ( (ArgMgrDefined(label) )
? (ArgMgrValue(label) )
* @return Pointer to the array
* Pointer NULL if error
*/
-char **ArgMgr::ArgMgrGetListOfString ( char *label, int *nbElem )
+char **ArgMgr::ArgMgrGetListOfString ( const char *label, int *number )
{
int taille;
char *value = ArgMgrValue(label);
char *chainecur;
if (!value)
return 0;
- *nbElem = IdStrCountChar(value,',')+1; /* nb Elements = nb Commas +1 */
- taille = *nbElem;
+ *number = IdStrCountChar(value,',')+1; /* nb Elements = nb Commas +1 */
+ taille = *number;
liste = (char **) malloc (sizeof(char*) * taille + strlen(value)+1);
if ( !liste )
return 0;
* @return Pointer to the array
* Pointer NULL if error
*/
-int *ArgMgr::ArgMgrGetListOfInt ( char *label, int *number )
+int *ArgMgr::ArgMgrGetListOfInt ( const char *label, int *number )
{
char *value = ArgMgrValue(label);
int *liste;
* @return Pointer vers le tableau de lgr 'taille'
* NULL if error
*/
-float *ArgMgr::ArgMgrGetListOfFloat ( char *label, int *number )
+float *ArgMgr::ArgMgrGetListOfFloat ( const char *label, int *number )
{
char *value = ArgMgrValue(label);
float *liste;
}
/**
- * \brief renvoie 1 tableau contenant un ensemble de paires d'entiers
- * @param value pointer vers la zone allouee contenant les
- * intervalles (deb1,fin1, deb2,fin2, ...)
- * @param number Pointer vers le nb de paires trouvees
- * @return 1 tableau contenant un ensemble de paires d'entiers
+ * \brief returns an array of set of 'INT pairs'
+ * @param value char array decribing a set of 'INT pairs' (deb1,fin1, deb2,fin2, ...)
+ * @param number nb of found pairs
+ * @return array of set of 'INT pairs'
*/
int *ArgMgr::IdStrIntEnum ( char* value, int *number)
{
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 = (int *) calloc (1,sizeof(int)*2*taille );
if ( !liste )
}
return liste;
}
-
+
/**
- * \brief renvoie 1 tableau contenant un ensemble de 'paires' de FLOAT
- * @param value pointer vers la zone allouee contenant les
- * paires (deb1,fin1, deb2,fin2, ...)
- * @param number Pointer vers le nb de paires trouvees
- * @return tableau contenant un ensemble de 'paires' de FLOAT
+ * \brief returns an array a set of 'FLOAT pairs'
+ * @param value char array decribing a set of 'FLOAT pairs' (deb1,fin1, deb2,fin2, ...)
+ * @param number nb of found pairs
+ * @return array of set of 'FLOAT pairs'
*/
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 )
/**
* \brief decodage des elements d'un argument 'paires d'int' de lgr quelconque
- * @param label label name
+ * @param param label name
* @param number taille de l'ensemble de paires trouvee
* @return Pointer vers le tableau de taille '2*nbElem'
* Pointer NULL si erreur
*/
-int *ArgMgr::ArgMgrGetIntEnum ( char *label, int *number )
+int *ArgMgr::ArgMgrGetIntEnum ( const char *param, int *number )
{
- char *value = ArgMgrValue(label);
+ char *value = ArgMgrValue(param);
int *liste;
if (!value)
return 0;
/**
* \brief decodage des elements d'un argument 'paires de float' de lgr quelconque
- * @param label label name
+ * @param param label name
* @param number taille de l'ensemble de paires trouvee
* @return Pointer vers le tableau de taille '2*nbElem'
* Pointer NULL si erreur
*/
-float *ArgMgr::ArgMgrGetFloatEnum ( char *label, int *number )
+float *ArgMgr::ArgMgrGetFloatEnum ( const char *param, int *number )
{
- char *value = ArgMgrValue(label);
+ char *value = ArgMgrValue(param);
float *liste;
if (!value)
return 0;
* 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++;
}
/*------------------------------------------------------------------------
| Role : Reads a parameter from a file
- | Retour : Type : char *
+ | Return : Type : char *
| Role : pointer to the label
| parameters : param : char *
| Role : one where the parameter will be stored
| fd : FILE *
| 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;
/*------------------------------------------------------------------------
| Role : Reading of arguments in a parameter file
| (this function is recursive).
- | Retour : Type : int
+ | Return : Type : int
| Role : length needed to store all the parameters
| parameters : filename : char *
| Role : parameter File name
/*------------------------------------------------------------------------
| Role : Standard parameters management (on command line)
- | Retour : Type : void
+ | 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 )
{
/*------------------------------------------------------------------------
| Role : Sets in Upper Case.
- | Retour : Type : char *
+ | Return : Type : char *
| parameters : char *
+------------------------------------------------------------------------*/
char *ArgMgr::maj ( char *a )