1 /*****************************************************************************/
2 /* 8888888 88888888 88888888 */
5 /* 8 88888888 88888888 */
8 /* 888888 888888888 888888888 */
10 /* A Two-Dimensional General Purpose Semiconductor Simulator. */
13 /* Last update: May 14, 2006 */
17 /* NINT, No.69 P.O.Box, Xi'an City, China */
19 /*****************************************************************************/
24 bool Cmd::allowed_args(int argc
,...)
29 for(parg
=arg_map
.begin();parg
!=arg_map
.end();parg
++)
33 for(int i
=0;i
<argc
;i
++)
34 if( parg
->second
.arg_label
==va_arg(arg
,char *)) flag
= 1;
45 double Cmd::get_number(const char *name
, int alias_num
, ...)
50 va_start(arg
,alias_num
);
51 for(int i
=0;i
<alias_num
;i
++)
52 alias
[i
] = va_arg(arg
,char *);
53 double value
= va_arg(arg
,double);
56 if((parg
=arg_map
.find(arg_name
))!=arg_map
.end())
57 return parg
->second
.arg_value
.dval
;
59 for(int i
=0;i
<alias_num
;i
++)
60 if((parg
=arg_map
.find(alias
[i
]))!=arg_map
.end())
61 return parg
->second
.arg_value
.dval
;
67 int Cmd::get_integer(const char *name
, int alias_num
, ...)
72 va_start(arg
,alias_num
);
73 for(int i
=0;i
<alias_num
;i
++)
74 alias
[i
] = va_arg(arg
,char *);
75 int value
= va_arg(arg
,int);
78 if((parg
=arg_map
.find(arg_name
))!=arg_map
.end())
79 return parg
->second
.arg_value
.ival
;
81 for(int i
=0;i
<alias_num
;i
++)
82 if((parg
=arg_map
.find(alias
[i
]))!=arg_map
.end())
83 return parg
->second
.arg_value
.ival
;
89 bool Cmd::get_bool(const char *name
, int alias_num
, ...)
94 va_start(arg
,alias_num
);
95 for(int i
=0;i
<alias_num
;i
++)
96 alias
[i
] = va_arg(arg
,char *);
97 bool value
= va_arg(arg
,int);
100 if((parg
=arg_map
.find(arg_name
))!=arg_map
.end())
101 return parg
->second
.arg_value
.bval
;
103 for(int i
=0;i
<alias_num
;i
++)
104 if((parg
=arg_map
.find(alias
[i
]))!=arg_map
.end())
105 return parg
->second
.arg_value
.bval
;
111 char * Cmd::get_string(const char *name
, int alias_num
, ...)
113 string arg_name
=name
;
116 va_start(arg
,alias_num
);
117 for(int i
=0;i
<alias_num
;i
++)
118 alias
[i
] = va_arg(arg
,char *);
119 char * value
= va_arg(arg
,char *);
122 if((parg
=arg_map
.find(arg_name
))!=arg_map
.end())
123 return parg
->second
.arg_value
.sval
;
125 for(int i
=0;i
<alias_num
;i
++)
126 if((parg
=arg_map
.find(alias
[i
]))!=arg_map
.end())
127 return parg
->second
.arg_value
.sval
;
133 bool Cmd::is_arg_exist(const char *name
)
135 string arg_name
=name
;
136 if((parg
=arg_map
.find(arg_name
))!=arg_map
.end())
142 bool Cmd::is_arg_value(const char *name
, const char * value
)
144 string arg_name
=name
;
145 if((parg
=arg_map
.find(arg_name
))!=arg_map
.end())
146 if(!strcmp(parg
->second
.arg_value
.sval
,value
))