RAPL

Diff
Login

Diff

Differences From Artifact [a3f1f31939]:

To Artifact [81fff5c0c1]:


25
26
27
28
29
30
31

32
33
34
35
36
37
38
39
40
























41
42
43
44
45
46
47













48
49
50
51
52
53
54
25
26
27
28
29
30
31
32









33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56







57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76







+
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+








  R.Base.pkg_core_oid++;
  pkg_core.oid = R.Base.pkg_core_oid;

  //---------------------------------- Commands in alphabetical order
  /* ==================== command append ===================================== */
  interp.registerCommand("::append", function (interp, args) {
    var string_obj_ptr;
    args.shift();
    this.requireMinArgc(args, 1, "append", "");
    var var_name = args.shift().toString();
    var create_it = 1;
    /* FIXME !!! need handling for array names here */
    var var_obj = interp.global_ns_ptr.lookupVariableEx(interp, var_name, 0, "", 1, 1);
    if (var_obj.isUndefined()) {
      var_obj.setValue("");
    }
    var i;

    if (args.length < 2) {
      interp.wrongNumArgs(1, args, "varName ?value value ...?");
      return interp.ERROR;
    }
    if (args.length == 2) {
      string_obj_ptr = interp.variable_obj_type.getVariable(args[1], interp.FUNCTION_FLAGS_LEAVE_ERRMSG);
      if (!string_obj_ptr) {
        return interp.ERROR;
      }
    } else {
      var freeobj = 0;

      string_obj_ptr = interp.variable_obj_type.getVariable(args[1], interp.FUNCTION_FLAGS_UNSHARED);
      if (!string_obj_ptr) {
        /* Create the string if it doesn't exist */
        string_obj_ptr = interp.string_obj_type.newEmptyStringObj();
        freeobj = 1;
      } else {
        if (string_obj_ptr.isShared()) {
          freeobj = 1;
          string_obj_ptr = string_obj_ptr.duplicateObj();
        }
    var str = interp.getVarValue(var_name).toString();
    for (var i = 0; i < args.length; i++) {
      str += args[i].toString();
    }
//    interp.setVar(var_name, str);
    var_obj.setValue(str, null);
    return str;
      }
      for (i = 2; i < args.length; i++) {
        interp.string_obj_type.appendObj(string_obj_ptr, args[i]);
      }
      if (interp.variable_obj_type.setVariable(args[1], string_obj_ptr) != interp.OK) {
        if (freeobj) {
          string_obj_ptr.freeNewObj();
        }
        return interp.ERROR;
      }
    }
    interp.setResult(string_obj_ptr);
    return interp.OK;
  });

  /* ==================== command break ===================================== */
  interp.registerCommand("::break", function (interp, args) {
    interp.code = this.BREAK;
    return;
  });
236
237
238
239
240
241
242

243
244
245
246
247
248
249
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272







+







      while (1) {
        /* Far not enough arguments given! */
        if (current >= argc) {
          err = true;
          break;
        }
        if ((retval = interp.eval_expression.getBoolFromExpr(args[current++], bool)) != interp.OK) {
print("if ERROR");
          return retval;
	}
	bool = bool[0];
        /* There lacks something, isn't it? */
        if (current >= argc) {
          err = true;
	  break;
1100
1101
1102
1103
1104
1105
1106
1107

1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129

1130
1131
1132
1133
1134
1135
1136
1137
1123
1124
1125
1126
1127
1128
1129

1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149



1150

1151
1152
1153
1154
1155
1156
1157







-
+



















-
-
-
+
-







      var argc = args.length;
      var i = 1;

      /* Save the old call_frame pointer */
      saved_call_frame = interp.frame_ptr;
      /* Lookup the target frame pointer */
      str = args[1].getString();
      if ((str.charAt(0) >= '0' && str.charAt(0) <= '9') || strcharAt(0) == '#') {
      if ((str.charAt(0) >= '0' && str.charAt(0) <= '9') || str.charAt(0) == '#') {
        target_call_frame = interp.getCallFrameByLevel(args[i]);
        argc--;
	i++;
      } else {
        target_call_frame = interp.getCallFrameByLevel(null);
      }
      if (target_call_frame == null) {
        return interp.ERROR;
      }
      if (argc < 2) {
        i--;
        interp.wrongNumArgs(1, args, "?level? command ?arg ...?");
        return interp.ERROR;
      }
      /* Eval the code in the target call_frame. */
      interp.frame_ptr = target_call_frame;
      if (argc == 2) {
        retcode = interp.eval_statement.evalObj(args[i]);
      } else {
        obj_ptr = interp.default_obj.concatObj(argc - 1, args.slice(i));
        obj_ptr.incrRefCount();
        retcode = interp.eval_statement.evalObj(obj_ptr);
        retcode = interp.eval_statement.evalObjVector(argc - i + 1, args.slice(i));
        obj_ptr.decrRefCount();
      }
      interp.frame_ptr = saved_call_frame;
      return retcode;
    } else {
      interp.wrongNumArgs(1, args, "?level? command ?arg ...?");
      return interp.ERROR;
    }