298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
|
var token;
var retcode = stmt.OK;
var sargv = null;
var line_no = 0;
var had_comment = false;
stmt.eval_level++;
//print("EVALOBJ level!"+stmt.eval_level+"!"+script_obj_ptr.toString()+"!");
//print("EVALOBJ level!"+stmt.eval_level+"!"+script_obj_ptr.mySelf()+"!");
stmt.interp.error_flag = 0;
/* If the object is of type "list", with no string rep we can call
* a specialized version of evalObj() */
if (script_obj_ptr.isListObj() && script_obj_ptr.bytes == null) {
retcode = stmt.evalObjList(script_obj_ptr, stmt.interp.empty_obj, 1);
|
|
|
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
|
var token;
var retcode = stmt.OK;
var sargv = null;
var line_no = 0;
var had_comment = false;
stmt.eval_level++;
//print("EVALOBJ level!"+stmt.eval_level+"!"+script_obj_ptr+"!");
//print("EVALOBJ level!"+stmt.eval_level+"!"+script_obj_ptr.mySelf()+"!");
stmt.interp.error_flag = 0;
/* If the object is of type "list", with no string rep we can call
* a specialized version of evalObj() */
if (script_obj_ptr.isListObj() && script_obj_ptr.bytes == null) {
retcode = stmt.evalObjList(script_obj_ptr, stmt.interp.empty_obj, 1);
|
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
|
continue
}
argc -= num_comments;
if (retcode == stmt.OK && argc) {
/* Lookup the command to call */
// cmd = stmt.interp.command_obj_type.getCommand(argv[0], stmt.FUNCTION_FLAGS_LEAVE_ERR_MSG);
cmd = stmt.interp.getCommand(argv[0]);
if (cmd != null) {
/* Call it -- Make sure result is an empty object. */
cmd.incrCmdRefCount();
stmt.interp.setEmptyResult();
//print("CMDT!"+argv[0]+"!"+cmd.getCommandTypeString(cmd.command_type)+"!");
//print("argv!"+argc+"!"+argv+"!"+argv.length+"!");
if (cmd.is_proc) {
retcode = cmd.u.proc.cmd_proc(cmd, script.script_object.file_name_obj, line_no, argc, argv);
} else {
/* Check if there are too nested calls */
//print("FR!"+intp.frame_ptr.toDebugString()+"!"+intp.max_nesting_depth+"!");
stmt.interp.cmd_priv_data = cmd.u.native_fcn.privdata;
retcode = cmd.u.native_fcn.cmd_proc(stmt.interp, argv, cmd);
}
cmd.decrCmdRefCount();
} else {
if (! (argc == 1 && argv == "")) {
//print("RETC!"+retcode+"!"+argc+"!"+argv+"!");
/* Call [unknown] */
retcode = stmt.interp.unknownFcn(argc, argv, script.script_object.file_name_obj, line_no);
} else {
/* we do not call unknown, if we had only the empty string as command and no arguments */
}
|
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
|
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
|
continue
}
argc -= num_comments;
if (retcode == stmt.OK && argc) {
/* Lookup the command to call */
// cmd = stmt.interp.command_obj_type.getCommand(argv[0], stmt.FUNCTION_FLAGS_LEAVE_ERR_MSG);
cmd = stmt.interp.getCommand(argv[0]);
if (cmd == null && argc == 1) {
/* check if the argument looks like a list and the expand it (old style!!) */
var len = stmt.interp.list_obj_type.listLength(argv[0]);
var result_ptr = new Array();
var ret = stmt.interp.script_obj_type.substObj(argv[0], result_ptr, stmt.FUNCTION_FLAGS_NONE)
if (ret == stmt.OK) {
result_ptr = result_ptr[0];
len = stmt.interp.list_obj_type.listLength(result_ptr);
if (len > 1) {
var my_argc = new Array();
var my_argv = new Array();
if (len > 1) {
stmt.interp.list_obj_type.listGetElements(result_ptr, my_argc, my_argv);
argc = my_argc[0];
argv = my_argv[0];
cmd = stmt.interp.getCommand(argv[0]);
}
}
}
}
if (cmd != null) {
/* Call it -- Make sure result is an empty object. */
cmd.incrCmdRefCount();
stmt.interp.setEmptyResult();
//print("CMDT!"+argv[0]+"!"+cmd.getCommandTypeString(cmd.command_type)+"!");
//print("argv!"+argc+"!"+argv+"!"+argv.length+"!");
if (cmd.is_proc) {
retcode = cmd.u.proc.cmd_proc(cmd, script.script_object.file_name_obj, line_no, argc, argv);
} else {
/* Check if there are too nested calls */
//print("FR!"+intp.frame_ptr.toDebugString()+"!"+intp.max_nesting_depth+"!");
stmt.interp.cmd_priv_data = cmd.u.native_fcn.privdata;
retcode = cmd.u.native_fcn.cmd_proc(stmt.interp, argv, cmd);
}
cmd.decrCmdRefCount();
} else {
print("UNK!"+argv[0]+"!"+argv[0].toDebugString()+"!");
if (! (argc == 1 && argv == "")) {
//print("RETC!"+retcode+"!"+argc+"!"+argv+"!");
/* Call [unknown] */
retcode = stmt.interp.unknownFcn(argc, argv, script.script_object.file_name_obj, line_no);
} else {
/* we do not call unknown, if we had only the empty string as command and no arguments */
}
|