*/
cl_cmdline::cl_cmdline(class cl_app *the_app,
- char *acmd, class cl_console *acon):
+ char *acmd, class cl_console_base *acon):
cl_base()
{
app= the_app;
cl_cmdline::skip_delims(char *start)
{
while (*start &&
- strchr(" \t\v\r,", *start))
+ strchr(" \t\v\r,", *start))
start++;
return(start);
}
{
char *end= start, *param_str;
if (*start == '"')
- split_out_string(&start, &end);
+ split_out_string(&start, &end);
else if (*start == '>')
- split_out_output_redirection(&start, &end);
+ split_out_output_redirection(&start, &end);
else
- {
- char *dot;
+ {
+ char *dot;
i= strcspn(start, " \t\v\r,");
end= start+i;
param_str= (char *)malloc(i+1);
strncpy(param_str, start, i);
- param_str[i]= '\0';
- tokens->add(strdup(param_str));
- if ((dot= strchr(param_str, '.')) != NULL)
- split_out_bit(dot, param_str);
- else if ((dot= strchr(param_str, '[')) != NULL)
- split_out_array(dot, param_str);
- else if (strchr("0123456789-+", *param_str) != NULL)
- {
- // number
- params->add(arg= new cl_cmd_int_arg((long)
- strtol(param_str, 0, 0)));
- arg->init();
- }
- else
- {
- // symbol
- params->add(arg= new cl_cmd_sym_arg(param_str));
- arg->init();
- }
- free(param_str);
- }
+ param_str[i]= '\0';
+ tokens->add(strdup(param_str));
+ if ((dot= strchr(param_str, '.')) != NULL)
+ split_out_bit(dot, param_str);
+ else if ((dot= strchr(param_str, '[')) != NULL)
+ split_out_array(dot, param_str);
+ else if (strchr("0123456789-+", *param_str) != NULL)
+ {
+ // number
+ params->add(arg= new cl_cmd_int_arg((long)
+ strtol(param_str, 0, 0)));
+ arg->init();
+ }
+ else
+ {
+ // symbol
+ params->add(arg= new cl_cmd_sym_arg(param_str));
+ arg->init();
+ }
+ free(param_str);
+ }
start= end;
start= skip_delims(start);
}
if (s && *s)
{
while (*s &&
- strchr(" \t\v\r,", *s) == NULL)
- s++;
+ strchr(" \t\v\r,", *s) == NULL)
+ s++;
s= skip_delims(s);
char *p= strdup(s);
free(cmd);
params= new cl_list(2, 2, "params");
split();
if (strcmp(get_name(), "\n") == 0)
- set_name(0);
+ set_name(0);
}
return(have_real_name());
}
{
char *n;
return((n= get_name()) &&
- *n == '\n');
+ *n == '\n');
}
class cl_cmd_arg *
int iparam= 0;
class cl_cmd_arg *parm= (class cl_cmd_arg *)(params->at(iparam));
while (*p &&
- parm)
+ parm)
{
//printf("***Checking %s as %c\n",parm->get_svalue(),*p);
if (uc)
- switch (*p)
- {
- case SY_ADDR:
- if (!parm->as_address(uc))
- return(DD_FALSE);
- //printf("ADDRESS match %lx\n",parm->value.address);
- break;
- case SY_MEMORY:
- if (!parm->as_memory(uc))
- return(DD_FALSE);
- //printf("MEMORY match %s\n",parm->value.memory->class_name);
- break;
- case SY_BIT:
- if (!parm->as_bit(uc))
- return(DD_FALSE);
- break;
- }
+ switch (*p)
+ {
+ case SY_ADDR:
+ if (!parm->as_address(uc))
+ return(DD_FALSE);
+ //printf("ADDRESS match %lx\n",parm->value.address);
+ break;
+ case SY_MEMORY:
+ if (!parm->as_memory(uc))
+ return(DD_FALSE);
+ //printf("MEMORY match %s\n",parm->value.memory->class_name);
+ break;
+ case SY_BIT:
+ if (!parm->as_bit(uc))
+ return(DD_FALSE);
+ break;
+ }
switch (*p)
- {
- case SY_ADDR: case SY_MEMORY: case SY_BIT: break;
- case SY_NUMBER:
- if (!parm->as_number())
- return(DD_FALSE);
- break;
- case SY_DATA:
- if (!parm->as_data())
- return(DD_FALSE);
- break;
- case SY_HW:
- if (!parm->as_hw(uc))
- return(DD_FALSE);
- break;
- case SY_STRING:
- if (!parm->as_string())
- return(DD_FALSE);
- break;
- case SY_DATALIST:
- if (!set_data_list(parm, &iparam))
- return(DD_FALSE);
- break;
- default:
- return(DD_FALSE);
- }
+ {
+ case SY_ADDR: case SY_MEMORY: case SY_BIT: break;
+ case SY_NUMBER:
+ if (!parm->as_number())
+ return(DD_FALSE);
+ break;
+ case SY_DATA:
+ if (!parm->as_data())
+ return(DD_FALSE);
+ break;
+ case SY_HW:
+ if (!parm->as_hw(uc))
+ return(DD_FALSE);
+ break;
+ case SY_STRING:
+ if (!parm->as_string())
+ return(DD_FALSE);
+ break;
+ case SY_DATALIST:
+ if (!set_data_list(parm, &iparam))
+ return(DD_FALSE);
+ break;
+ default:
+ return(DD_FALSE);
+ }
p++;
iparam++;
if (iparam < params->count)
- parm= (class cl_cmd_arg *)(params->at(iparam));
+ parm= (class cl_cmd_arg *)(params->at(iparam));
else
- parm= 0;
+ parm= 0;
}
if (!*p &&
!parm)
for (i= *iparm, next_parm= param(i); next_parm; i++, next_parm= param(i))
{
if (next_parm->is_string())
- {
- int l;
- char *s;
- //s= proc_escape(next_parm->get_svalue(), &l);
- if (!next_parm->as_string())
- continue;
- s= next_parm->value.string.string;
- l= next_parm->value.string.len;
- if (!array)
- array= (t_mem*)malloc(sizeof(t_mem)*l);
- else
- array= (t_mem*)realloc(array, sizeof(t_mem)*(l+len));
- for (j= 0; j < l; j++)
- {
- array[len]= s[j];
- len++;
- }
- //if (s)
- //free(s);
- }
+ {
+ int l;
+ char *s;
+ //s= proc_escape(next_parm->get_svalue(), &l);
+ if (!next_parm->as_string())
+ continue;
+ s= next_parm->value.string.string;
+ l= next_parm->value.string.len;
+ if (!array)
+ array= (t_mem*)malloc(sizeof(t_mem)*l);
+ else
+ array= (t_mem*)realloc(array, sizeof(t_mem)*(l+len));
+ for (j= 0; j < l; j++)
+ {
+ array[len]= s[j];
+ len++;
+ }
+ //if (s)
+ //free(s);
+ }
else
- {
- if (!next_parm->as_data())
- {
- if (array)
- free(array);
- return(DD_FALSE);
- }
- if (!array)
- array= (t_mem*)malloc(sizeof(t_mem));
- else
- array= (t_mem*)realloc(array, sizeof(t_mem)*(1+len));
- array[len]= next_parm->value.data;
- len++;
- }
+ {
+ if (!next_parm->as_data())
+ {
+ if (array)
+ free(array);
+ return(DD_FALSE);
+ }
+ if (!array)
+ array= (t_mem*)malloc(sizeof(t_mem));
+ else
+ array= (t_mem*)realloc(array, sizeof(t_mem)*(1+len));
+ array[len]= next_parm->value.data;
+ len++;
+ }
}
*iparm= i;
parm->value.data_list.array= array;
*/
cl_cmd::cl_cmd(enum cmd_operate_on op_on,
- char *aname,
- int can_rep,
- char *short_hlp,
- char *long_hlp):
+ char *aname,
+ int can_rep,
+ char *short_hlp,
+ char *long_hlp):
cl_base()
{
operate_on= op_on;
if (strict)
{
for (i= 0; i < names->count; i++)
- {
- char *n= (char*)(names->at(i));
- if (strcmp(aname, n) == 0)
- return(1);
- }
+ {
+ char *n= (char*)(names->at(i));
+ if (strcmp(aname, n) == 0)
+ return(1);
+ }
}
else
{
for (i= 0; i < names->count; i++)
- {
- char *n= (char*)(names->at(i));
- if (strstr(n, aname) == n)
- return(1);
- }
+ {
+ char *n= (char*)(names->at(i));
+ if (strstr(n, aname) == n)
+ return(1);
+ }
}
return(0);
}
int
cl_cmd::work(class cl_app *app,
- class cl_cmdline *cmdline, class cl_console *con)
+ class cl_cmdline *cmdline, class cl_console_base *con)
{
if (!syntax_ok(cmdline))
return(0);
{
case operate_on_app:
if (!app)
- {
- con->dd_printf("There is no application to work on!\n");
- return(DD_TRUE);
- }
+ {
+ con->dd_printf("There is no application to work on!\n");
+ return(DD_TRUE);
+ }
return(do_work(app, cmdline, con));
case operate_on_sim:
if (!sim)
- {
- con->dd_printf("There is no simulator to work on!\n");
- return(DD_TRUE);
- }
+ {
+ con->dd_printf("There is no simulator to work on!\n");
+ return(DD_TRUE);
+ }
return(do_work(sim, cmdline, con));
case operate_on_uc:
if (!sim)
- {
- con->dd_printf("There is no microcontroller to work on!\n");
- return(DD_TRUE);
- }
+ {
+ con->dd_printf("There is no microcontroller to work on!\n");
+ return(DD_TRUE);
+ }
return(do_work(uc, cmdline, con));
default:
return(do_work(cmdline, con));
}
int
-cl_cmd::do_work(class cl_cmdline *cmdline, class cl_console *con)
+cl_cmd::do_work(class cl_cmdline *cmdline, class cl_console_base *con)
{
con->dd_printf("Command \"%s\" does nothing.\n",
- (char*)(names->at(0)));
+ (char*)(names->at(0)));
return(0);
}
int
cl_cmd::do_work(class cl_app *app,
- class cl_cmdline *cmdline, class cl_console *con)
+ class cl_cmdline *cmdline, class cl_console_base *con)
{
con->dd_printf("Command \"%s\" does nothing on application.\n",
- (char*)(names->at(0)));
+ (char*)(names->at(0)));
return(0);
}
int
cl_cmd::do_work(class cl_sim *sim,
- class cl_cmdline *cmdline, class cl_console *con)
+ class cl_cmdline *cmdline, class cl_console_base *con)
{
con->dd_printf("Command \"%s\" does nothing on simulator.\n",
- (char*)(names->at(0)));
+ (char*)(names->at(0)));
return(0);
}
int
cl_cmd::do_work(class cl_uc *uc,
- class cl_cmdline *cmdline, class cl_console *con)
+ class cl_cmdline *cmdline, class cl_console_base *con)
{
con->dd_printf("Command \"%s\" does nothing on microcontroller.\n",
- (char*)(names->at(0)));
+ (char*)(names->at(0)));
return(0);
}
{
class cl_cmd *c= (class cl_cmd *)at(i);
if (c->name_match(cmdline, 1))
- return(c);
+ return(c);
}
// not exact match
class cl_cmd *c_matched= 0;
{
class cl_cmd *c= (class cl_cmd *)at(i);
if (c->name_match(cmdline, 0))
- {
- if (!c_matched)
- c_matched= c;
- else
- return(0);
- }
+ {
+ if (!c_matched)
+ c_matched= c;
+ else
+ return(0);
+ }
}
return(c_matched);
//return(0);
{
class cl_cmd *c= (class cl_cmd *)at(i);
if (c->name_match(cmd_name, 1))
- return(c);
+ return(c);
}
return(0);
}
{
class cl_cmd *cmd= (class cl_cmd *)(at(i));
if (cmd->name_match(nam, 1))
- free_at(i);
+ free_at(i);
}
}
{
class cl_cmd *c= (class cl_cmd *)(at(i));
if (c->name_match(nam, 1))
- {
- delete c;
- put_at(i, cmd);
- }
+ {
+ delete c;
+ put_at(i, cmd);
+ }
}
}
*/
cl_super_cmd::cl_super_cmd(char *aname,
- int can_rep,
- char *short_hlp,
- char *long_hlp,
- class cl_cmdset *acommands):
+ int can_rep,
+ char *short_hlp,
+ char *long_hlp,
+ class cl_cmdset *acommands):
cl_cmd(operate_on_none, aname, can_rep, short_hlp, long_hlp)
{
commands= acommands;
int
cl_super_cmd::work(class cl_app *app,
- class cl_cmdline *cmdline, class cl_console *con)
+ class cl_cmdline *cmdline, class cl_console_base *con)
{
class cl_cmd *cmd= 0;
if (!cmdline->shift())
{
if ((cmd= commands->get_cmd("_no_parameters_")) != 0)
- return(cmd->work(app, cmdline, con));
+ return(cmd->work(app, cmdline, con));
int i;
con->dd_printf("\"%s\" must be followed by the name of a subcommand\n"
- "List of subcommands:\n", (char*)(names->at(0)));
+ "List of subcommands:\n", (char*)(names->at(0)));
for (i= 0; i < commands->count; i++)
- {
- cmd= (class cl_cmd *)(commands->at(i));
- con->dd_printf("%s\n", cmd->short_help);
- }
+ {
+ cmd= (class cl_cmd *)(commands->at(i));
+ con->dd_printf("%s\n", cmd->short_help);
+ }
return(0);
}
if ((cmd= commands->get_cmd(cmdline, con->accept_last())) == NULL)
{
con->dd_printf("Undefined subcommand: \"%s\". Try \"help %s\".\n",
- cmdline->get_name(), (char*)(names->at(0)));
+ cmdline->get_name(), (char*)(names->at(0)));
return(0);
}
return(cmd->work(app, cmdline, con));