42 #define command_usage(usage) command_line::option((const char*)0,argc,argv,(const char*)0,usage)
43 #define command_option(name,defaut,usage) command_line::option(name,argc,argv,defaut,usage)
46 #define command_line_OS 2
47 #pragma warning( disable : 4530)
48 #pragma warning( disable : 4996)
49 #pragma warning( disable : 4290)
51 #define use_color_terminal
52 #define command_line_OS 1
62 namespace command_line {
64 #ifdef use_color_terminal
65 const char t_normal[9] = {0x1b,
'[',
'0',
';',
'0',
';',
'0',
'm',
'\0'};
66 const char t_red[11] = {0x1b,
'[',
'4',
';',
'3',
'1',
';',
'5',
'9',
'm',
'\0'};
67 const char t_bold[5] = {0x1b,
'[',
'1',
'm',
'\0'};
68 const char t_purple[11] = {0x1b,
'[',
'0',
';',
'3',
'5',
';',
'5',
'9',
'm',
'\0'};
74 inline char uncase(
const char x) {
return (
char)( ( x < 'A' || x >
'Z' )?x:x-
'A'+
'a'); }
76 inline float atof(
const char *str)
82 std::sscanf(str,
"%g/%g", &x,&y);
91 for ( k = 0; s[k]; k++) { };
97 inline int strncmp(
const char *s1,
const char *s2,
const int l) {
100 for (
int k = 0; k < l; k++) {
101 n += abs(s1[k]- s2[k]);
108 inline int strfind(
const char *s,
const char c)
118 inline int strncasecmp(
const char *s1,
const char *s2,
const int l) {
121 for (
int k = 0; k < l; k++) {
129 inline int strcmp(
const char *s1,
const char *s2)
146 inline const char*
option(
const char *
const name,
const int argc,
char **argv,
147 const char *defaut,
const char *
const usage=NULL)
149 static bool first =
true, visu =
false;
150 const char *res = NULL;
155 if ( !name && visu ) {
158 std::fprintf(stderr,
" : %s", usage);
160 std::fprintf(stderr,
" (%s, %s)\n\n",__DATE__,__TIME__);
168 res = (( k++ == argc )?defaut:(( k == argc )?argv[--k]:argv[k]));
177 inline bool option(
const char *
const name,
const int argc,
char **argv,
178 const bool defaut,
const char *
const usage=NULL)
186 inline int option(
const char *
const name,
const int argc,
char **argv,
187 const int defaut,
const char *
const usage=NULL)
190 const int res = s?std::atoi(s):defaut;
192 std::sprintf(tmp,
"%d", res);
197 inline char option(
const char *
const name,
const int argc,
char **argv,
198 const char defaut,
const char *
const usage=NULL)
201 const char res = s?s[0]:defaut;
209 inline double option(
const char *
const name,
const int argc,
char **argv,
210 const double defaut,
const char *
const usage=NULL)
215 std::sprintf(tmp,
"%g", res);
int strncmp(const char *s1, const char *s2, const int l)
int strcasecmp(const char *s1, const char *s2)
float atof(const char *str)
const char * option(const char *const name, const int argc, char **argv, const char *defaut, const char *const usage=NULL)
int strlen(const char *s)
char uncase(const char x)
const char * basename(const char *s)
int strfind(const char *s, const char c)
int strcmp(const char *s1, const char *s2)
int strncasecmp(const char *s1, const char *s2, const int l)