1 /*=========================================================================
4 Module: $RCSfile: gdcmArgMgr.h,v $
6 Date: $Date: 2005/06/06 12:37:58 $
7 Version: $Revision: 1.1 $
9 Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de
10 l'Image). All rights reserved. See Doc/License.txt or
11 http://www.creatis.insa-lyon.fr/Public/Gdcm/License.html for details.
13 This software is distributed WITHOUT ANY WARRANTY; without even
14 the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
15 PURPOSE. See the above copyright notices for more information.
17 =========================================================================*/
22 #include <stdlib.h> // For atof
27 #define ID_RFILE_TEXT "rt"
28 #define ARGMAXCOUNT 100 // Maximum number of arguments
29 #define ARG_LONG_MAX 1000
32 #define ARG_DEFAULT_PARAMOUT "fileout.par"
33 #define ARG_DEFAULT_LOGFILE "gdcm.log"
35 #define ARG_LABEL_LOGFILE "LOG"
36 #define ARG_LABEL_PARAMOUT "paramout"
38 #define START_USAGE(usage) static char * usage[] = {
39 #define FINISH_USAGE 0};
41 //-----------------------------------------------------------------------------
43 * \brief class designed for command line arguments management
44 * (to make programmer's live easier)
45 * NOT Dicom dependant (could be used for any kind
46 * of 'command line program')
49 //class GDCM_EXPORT ArgMgr {
53 ArgMgr(int argc, char **argv);
56 int ArgMgrDefined (char *); /* Checks if Param is defined*/
57 char *ArgMgrValue (char *); /* Returns Param value */
58 char *ArgMgrUnused (void); /* Returns a never used arg. */
59 int ArgMgrSave (char *); /* Save of parameters out */
60 int ArgMgrUsage (char **); /* Display program usage */
61 int ArgMgrPrintUnusedLabels (void); /* Prints unused labels */
63 int ArgMgrGetInt (char*, int); /* Gets an int (with default value) */
64 float ArgMgrGetFloat (char*, float);/* Gets a float (with default value) */
65 char *ArgMgrGetString(char*, char*);/* Gets a string (with default value) */
66 int ArgMgrGetLabel (char *, char *, int);
68 int ArgMgrWantInt (char*, char**); /* Demands an int */
69 float ArgMgrWantFloat (char*, char**); /* Demands a float */
70 char *ArgMgrWantString(char*, char**); /* Demands a string */
71 int ArgMgrWantLabel (char *, char *, char **);
73 int *ArgMgrGetListOfInt (char *, int *); /* Gets a list of int */
74 float *ArgMgrGetListOfFloat (char *, int *); /* Gets a list of float */
75 char **ArgMgrGetListOfString(char *, int *); /* Gets a list of string */
77 int * ArgMgrGetIntEnum (char *, int *); /* Gets a list of int intervals */
78 float * ArgMgrGetFloatEnum (char *, int *); /* Gets a list of float intervals*/
82 int FiltreLong (char *);
83 char *LoadedParam (char *, FILE *);
84 int ArgLoadFromFile (char *);
85 void ArgStdArgs (void);
87 // These ones are 'general purpose methods'
89 char *Majuscule (char *);
90 int IdStrCountChar (char *chaine, int caract);
91 int *IdStrIntEnum (char* value, int *number);
92 float *IdStrFloatEnum (char* value, int *number);
94 // --------------- Attributes ------------------------------
98 char *ArgParamOut; /* Output File Name for param */
100 char *ArgUsed; /* Used Arguments */
101 char *ArgLab[ARGMAXCOUNT]; /* Arguments Labels */
102 char *ArgStr[ARGMAXCOUNT]; /* Arguments 'strings' */
103 int ArgCount; /* Number of arguments passed */
106 } // end namespace gdcm