RAPL

Diff
Login

Diff

Differences From Artifact [7ee025eea7]:

To Artifact [7411fffd3f]:


820
821
822
823
824
825
826

827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834

835
836
837
838
839
840
841







+







-







    interp.current_script_obj = prev_script_obj;
    script_obj_ptr.decrRefCount();
    return interp.OK;
  });

  /* ==================== command split ===================================== */
  interp.registerCommand("::split", function (interp, args) {
//print("split!"+args+"!");
    var script_obj_ptr;
    var str;
    var split_chars;
    var no_match_start;
    var split_len;
    var str_len;
    var res_obj_ptr;
    var c = new Array();
    var len;
    var idx = 0;

    if (args.length != 2 && args.length != 3) {
      interp.wrongNumArgs(1, args, "string ?splitChars?");
      return interp.ERROR;
    }
857
858
859
860
861
862
863


864

865
866

867
868
869

870
871
872
873

874
875
876
877
878
879
880
857
858
859
860
861
862
863
864
865

866
867
868
869
870
871

872
873
874
875

876
877
878
879
880
881
882
883







+
+
-
+


+


-
+



-
+







    }
    no_match_start = idx;
    res_obj_ptr = interp.list_obj_type.newListObj(null, 0);
    /* Split */
    if (split_len) {
      var obj_ptr;
      while (str_len--) {
        var c = new Array();
        var sc_idx = 0;
        var sc = split_chars;
	var sc = split_chars;
        var sc_len = split_len;
        var sl = interp.default_obj.utf8_tounicode(str.substring(idx), c);
	var sc_idx2 = 0;
        while (sc_len--) {
          var pc = new Array();
          sc += interp.default_obj.utf8_tounicode(sc, pc);
          sc_idx += interp.default_obj.utf8_tounicode(sc.charAt(sc_idx), pc);
          if (c[0] == pc[0]) {
            obj_ptr = interp.string_obj_type.newStringObj(str.substring(no_match_start), (idx - no_match_start));
            interp.list_obj_type.listAppendElement(res_obj_ptr, obj_ptr);
            no_match_start += sl;
            no_match_start = idx + sl;
            break;
          }
        }
        idx += sl;
      }
      obj_ptr = interp.string_obj_type.newStringObj(str.substring(no_match_start), (idx - no_match_start));
      interp.list_obj_type.listAppendElement(res_obj_ptr, obj_ptr);
1240
1241
1242
1243
1244
1245
1246













1247


1248
1249
1250
1251
1252
1253
1254
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262

1263
1264
1265
1266
1267
1268
1269
1270
1271







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







        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 {
        /* cannot use evalObjVector() as that makes problems with ensemble commands!! */
        var my_str = "";
        var sep = "";
        for (; i < args.length; i++) {
          if (my_str.match(" ") != null) {
            my_str += sep+"{"+args[i]+"}";
          } else {
            my_str += sep+args[i];
          }
          sep = " ";
        }
        var my_ptr = interp.string_obj_type.newStringObj(my_str, -1);
        my_ptr.incrRefCount();
        retcode = interp.eval_statement.evalObjVector(argc - i + 1, args.slice(i));
        retcode = interp.eval_statement.evalObj(my_ptr);
        my_ptr.decrRefCount();
      }
      interp.frame_ptr = saved_call_frame;
      return retcode;
    } else {
      interp.wrongNumArgs(1, args, "?level? command ?arg ...?");
      return interp.ERROR;
    }