Skip to content

Instantly share code, notes, and snippets.

@notmasteryet
Created July 1, 2011 05:26

Revisions

  1. notmasteryet revised this gist Jul 1, 2011. 1 changed file with 1 addition and 1 deletion.
    2 changes: 1 addition & 1 deletion hacks.js
    Original file line number Diff line number Diff line change
    @@ -11,7 +11,7 @@
    function set_(array, offset) {
    if (arguments.length < 2) offset = 0;
    for (var i = 0, n = array.length; i < n; ++i, ++offset)
    this[i] = array[i];
    this[offset] = array[i] & 0xFF;
    }

    // we need typed arrays
  2. notmasteryet revised this gist Jul 1, 2011. 1 changed file with 0 additions and 27 deletions.
    27 changes: 0 additions & 27 deletions hacks.js
    Original file line number Diff line number Diff line change
    @@ -1,18 +1,11 @@
    (function() {

    try {

    var a = new Uint8Array(1);
    return; //no need

    } catch(e) { }



    function subarray(start, end) {

    return this.slice(start, end);

    }

    function set_(array, offset) {
    @@ -21,48 +14,28 @@
    this[i] = array[i];
    }



    // we need typed arrays

    function TypedArray(arg1) {

    var result;

    if (typeof arg1 === "number") {

    result = new Array(arg1);
    for (var i = 0; i < arg1; ++i)
    result[i] = 0;
    } else

    result = arg1.slice(0);


    result.subarray = subarray;

    result.buffer = result;

    result.byteLength = result.length;
    result.set = set_;


    if (typeof arg1 === "object" && arg1.buffer)

    result.buffer = arg1.buffer;

    return result;

    }



    window.Uint8Array = TypedArray;

    window.Uint32Array = TypedArray;

    window.Int32Array = TypedArray;

    })();


  3. notmasteryet created this gist Jul 1, 2011.
    102 changes: 102 additions & 0 deletions hacks.js
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,102 @@
    (function() {

    try {

    var a = new Uint8Array(1);
    return; //no need

    } catch(e) { }



    function subarray(start, end) {

    return this.slice(start, end);

    }

    function set_(array, offset) {
    if (arguments.length < 2) offset = 0;
    for (var i = 0, n = array.length; i < n; ++i, ++offset)
    this[i] = array[i];
    }



    // we need typed arrays

    function TypedArray(arg1) {

    var result;

    if (typeof arg1 === "number") {

    result = new Array(arg1);
    for (var i = 0; i < arg1; ++i)
    result[i] = 0;
    } else

    result = arg1.slice(0);


    result.subarray = subarray;

    result.buffer = result;

    result.byteLength = result.length;
    result.set = set_;


    if (typeof arg1 === "object" && arg1.buffer)

    result.buffer = arg1.buffer;

    return result;

    }



    window.Uint8Array = TypedArray;

    window.Uint32Array = TypedArray;

    window.Int32Array = TypedArray;

    })();


    (function() {
    if ("response" in XMLHttpRequest.prototype ||
    "mozResponseArrayBuffer" in XMLHttpRequest.prototype ||
    "mozResponse" in XMLHttpRequest.prototype ||
    "responseArrayBuffer" in XMLHttpRequest.prototype)
    return;
    Object.defineProperty(XMLHttpRequest.prototype, "response", {
    get: function() {
    return new Uint8Array( new VBArray(this.responseBody).toArray() );
    }
    });
    })();

    (function() {
    if ("btoa" in window)
    return;

    var digits = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";

    window.btoa = function(chars) {
    var buffer = "";
    var i, n;
    for (i = 0, n = chars.length; i < n; i += 3) {
    var b1 = chars.charCodeAt(i) & 0xFF;
    var b2 = chars.charCodeAt(i + 1) & 0xFF;
    var b3 = chars.charCodeAt(i + 2) & 0xFF;
    var d1 = b1 >> 2, d2 = ((b1 & 3) << 4) | (b2 >> 4);
    var d3 = i + 1 < n ? ((b2 & 0xF) << 2) | (b3 >> 6) : 64;
    var d4 = i + 2 < n ? (b3 & 0x3F) : 64;
    buffer += digits.charAt(d1) + digits.charAt(d2) + digits.charAt(d3) + digits.charAt(d4);
    }
    return buffer;
    };
    })();