summaryrefslogtreecommitdiff
path: root/js/src/Ice/Base64.js
diff options
context:
space:
mode:
Diffstat (limited to 'js/src/Ice/Base64.js')
-rw-r--r--js/src/Ice/Base64.js402
1 files changed, 199 insertions, 203 deletions
diff --git a/js/src/Ice/Base64.js b/js/src/Ice/Base64.js
index f1f9ec47964..4e318c217e7 100644
--- a/js/src/Ice/Base64.js
+++ b/js/src/Ice/Base64.js
@@ -7,270 +7,266 @@
//
// **********************************************************************
-(function(global){
- require("Ice/Buffer");
+var Ice = require("../Ice/Buffer").Ice;
- var Ice = global.Ice || {};
+var Buffer = Ice.Buffer;
- var Buffer = Ice.Buffer;
+var Base64 = {};
- var Base64 = {};
+var _codeA = "A".charCodeAt(0);
+var _codea = "a".charCodeAt(0);
+var _code0 = "0".charCodeAt(0);
- var _codeA = "A".charCodeAt(0);
- var _codea = "a".charCodeAt(0);
- var _code0 = "0".charCodeAt(0);
-
- Base64.encode = function(buf) // Expects native Buffer
+Base64.encode = function(buf) // Expects native Buffer
+{
+ if(buf === null || buf.length === 0)
{
- if(buf === null || buf.length === 0)
- {
- return "";
- }
+ return "";
+ }
+
+ var base64Bytes = (((buf.length * 4) / 3) + 1);
+ var newlineBytes = (((base64Bytes * 2) / 76) + 1);
+ var totalBytes = base64Bytes + newlineBytes;
- var base64Bytes = (((buf.length * 4) / 3) + 1);
- var newlineBytes = (((base64Bytes * 2) / 76) + 1);
- var totalBytes = base64Bytes + newlineBytes;
+ var v = [];
- var v = [];
+ var by1;
+ var by2;
+ var by3;
+ var by4;
+ var by5;
+ var by6;
+ var by7;
- var by1;
- var by2;
- var by3;
- var by4;
- var by5;
- var by6;
- var by7;
+ for(var i = 0; i < buf.length; i += 3)
+ {
+ by1 = buf[i] & 0xff;
+ by2 = 0;
+ by3 = 0;
- for(var i = 0; i < buf.length; i += 3)
+ if((i + 1) < buf.length)
{
- by1 = buf[i] & 0xff;
- by2 = 0;
- by3 = 0;
-
- if((i + 1) < buf.length)
- {
- by2 = buf[i + 1] & 0xff;
- }
-
- if((i + 2) < buf.length)
- {
- by3 = buf[i + 2] & 0xff;
- }
-
- by4 = (by1 >> 2) & 0xff;
- by5 = (((by1 & 0x3) << 4) | (by2 >> 4)) & 0xff;
- by6 = (((by2 & 0xf) << 2) | (by3 >> 6)) & 0xff;
- by7 = by3 & 0x3f;
-
- v.push(encodeChar(by4));
- v.push(encodeChar(by5));
-
- if((i + 1) < buf.length)
- {
- v.push(encodeChar(by6));
- }
- else
- {
- v.push("=");
- }
-
- if((i + 2) < buf.length)
- {
- v.push(encodeChar(by7));
- }
- else
- {
- v.push("=");
- }
+ by2 = buf[i + 1] & 0xff;
}
- var retval = v.join("");
- var outString = [];
- var iter = 0;
-
- while((retval.length - iter) > 76)
+ if((i + 2) < buf.length)
{
- outString.push(retval.substring(iter, iter + 76));
- outString.push("\r\n");
- iter += 76;
+ by3 = buf[i + 2] & 0xff;
}
- outString.push(retval.substring(iter));
+ by4 = (by1 >> 2) & 0xff;
+ by5 = (((by1 & 0x3) << 4) | (by2 >> 4)) & 0xff;
+ by6 = (((by2 & 0xf) << 2) | (by3 >> 6)) & 0xff;
+ by7 = by3 & 0x3f;
- return outString.join("");
- };
+ v.push(encodeChar(by4));
+ v.push(encodeChar(by5));
- Base64.decode = function(str) // Returns native Buffer
- {
- var newStr = [];
-
- for(var j = 0; j < str.length; j++)
+ if((i + 1) < buf.length)
{
- var c = str.charAt(j);
- if(Base64.isBase64(c))
- {
- newStr.push(c);
- }
+ v.push(encodeChar(by6));
}
-
- if(newStr.length === 0)
+ else
{
- return null;
+ v.push("=");
}
- // Note: This is how we were previously computing the size of the return
- // sequence. The method below is more efficient (and correct).
- // size_t lines = str.size() / 78;
- // size_t totalBytes = (lines * 76) + (((str.size() - (lines * 78)) * 3) / 4);
+ if((i + 2) < buf.length)
+ {
+ v.push(encodeChar(by7));
+ }
+ else
+ {
+ v.push("=");
+ }
+ }
- // Figure out how long the final sequence is going to be.
- var totalBytes = (newStr.length * 3 / 4) + 1;
+ var retval = v.join("");
+ var outString = [];
+ var iter = 0;
- var retval = new Buffer();
- retval.resize(totalBytes);
+ while((retval.length - iter) > 76)
+ {
+ outString.push(retval.substring(iter, iter + 76));
+ outString.push("\r\n");
+ iter += 76;
+ }
- var by1;
- var by2;
- var by3;
- var by4;
+ outString.push(retval.substring(iter));
- var c1;
- var c2;
- var c3;
- var c4;
+ return outString.join("");
+};
- var off = 0;
+Base64.decode = function(str) // Returns native Buffer
+{
+ var newStr = [];
- for(var i = 0; i < newStr.length; i += 4)
+ for(var j = 0; j < str.length; j++)
+ {
+ var c = str.charAt(j);
+ if(Base64.isBase64(c))
{
- c1 = "A";
- c2 = "A";
- c3 = "A";
- c4 = "A";
-
- c1 = newStr[i];
-
- if((i + 1) < newStr.length)
- {
- c2 = newStr[i + 1];
- }
-
- if((i + 2) < newStr.length)
- {
- c3 = newStr[i + 2];
- }
-
- if((i + 3) < newStr.length)
- {
- c4 = newStr[i + 3];
- }
-
- by1 = decodeChar(c1) & 0xff;
- by2 = decodeChar(c2) & 0xff;
- by3 = decodeChar(c3) & 0xff;
- by4 = decodeChar(c4) & 0xff;
-
- retval.put((by1 << 2) | (by2 >> 4));
-
- if(c3 != "=")
- {
- retval.put(((by2 & 0xf) << 4) | (by3 >> 2));
- }
-
- if(c4 != "=")
- {
- retval.put(((by3 & 0x3) << 6) | by4);
- }
+ newStr.push(c);
}
+ }
+
+ if(newStr.length === 0)
+ {
+ return null;
+ }
+
+ // Note: This is how we were previously computing the size of the return
+ // sequence. The method below is more efficient (and correct).
+ // size_t lines = str.size() / 78;
+ // size_t totalBytes = (lines * 76) + (((str.size() - (lines * 78)) * 3) / 4);
+
+ // Figure out how long the final sequence is going to be.
+ var totalBytes = (newStr.length * 3 / 4) + 1;
+
+ var retval = new Buffer();
+ retval.resize(totalBytes);
- return retval.remaining > 0 ? retval.getArrayAt(0, retval.position) : retval.getArrayAt(0);
- };
+ var by1;
+ var by2;
+ var by3;
+ var by4;
- Base64.isBase64 = function(c)
+ var c1;
+ var c2;
+ var c3;
+ var c4;
+
+ var off = 0;
+
+ for(var i = 0; i < newStr.length; i += 4)
{
- if(c >= 'A' && c <= 'Z')
- {
- return true;
- }
+ c1 = "A";
+ c2 = "A";
+ c3 = "A";
+ c4 = "A";
+
+ c1 = newStr[i];
- if(c >= 'a' && c <= 'z')
+ if((i + 1) < newStr.length)
{
- return true;
+ c2 = newStr[i + 1];
}
- if(c >= '0' && c <= '9')
+ if((i + 2) < newStr.length)
{
- return true;
+ c3 = newStr[i + 2];
}
- if(c == '+')
+ if((i + 3) < newStr.length)
{
- return true;
+ c4 = newStr[i + 3];
}
- if(c == '/')
+ by1 = decodeChar(c1) & 0xff;
+ by2 = decodeChar(c2) & 0xff;
+ by3 = decodeChar(c3) & 0xff;
+ by4 = decodeChar(c4) & 0xff;
+
+ retval.put((by1 << 2) | (by2 >> 4));
+
+ if(c3 != "=")
{
- return true;
+ retval.put(((by2 & 0xf) << 4) | (by3 >> 2));
}
- if(c == '=')
+ if(c4 != "=")
{
- return true;
+ retval.put(((by3 & 0x3) << 6) | by4);
}
+ }
- return false;
- };
+ return retval.remaining > 0 ? retval.getArrayAt(0, retval.position) : retval.getArrayAt(0);
+};
- function encodeChar(uc)
+Base64.isBase64 = function(c)
+{
+ if(c >= 'A' && c <= 'Z')
{
- if(uc < 26)
- {
- return String.fromCharCode(_codeA + uc);
- }
+ return true;
+ }
- if(uc < 52)
- {
- return String.fromCharCode(_codea + (uc - 26));
- }
+ if(c >= 'a' && c <= 'z')
+ {
+ return true;
+ }
- if(uc < 62)
- {
- return String.fromCharCode(_code0 + (uc - 52));
- }
+ if(c >= '0' && c <= '9')
+ {
+ return true;
+ }
- if(uc == 62)
- {
- return "+";
- }
+ if(c == '+')
+ {
+ return true;
+ }
- return "/";
+ if(c == '/')
+ {
+ return true;
}
- function decodeChar(c)
+ if(c == '=')
{
- if(c >= 'A' && c <= 'Z')
- {
- return c.charCodeAt(0) - _codeA;
- }
+ return true;
+ }
- if(c >= 'a' && c <= 'z')
- {
- return c.charCodeAt(0) - _codea + 26;
- }
+ return false;
+};
- if(c >= '0' && c <= '9')
- {
- return c.charCodeAt(0) - _code0 + 52;
- }
+function encodeChar(uc)
+{
+ if(uc < 26)
+ {
+ return String.fromCharCode(_codeA + uc);
+ }
- if(c == '+')
- {
- return 62;
- }
+ if(uc < 52)
+ {
+ return String.fromCharCode(_codea + (uc - 26));
+ }
+
+ if(uc < 62)
+ {
+ return String.fromCharCode(_code0 + (uc - 52));
+ }
+
+ if(uc == 62)
+ {
+ return "+";
+ }
+
+ return "/";
+}
+
+function decodeChar(c)
+{
+ if(c >= 'A' && c <= 'Z')
+ {
+ return c.charCodeAt(0) - _codeA;
+ }
+
+ if(c >= 'a' && c <= 'z')
+ {
+ return c.charCodeAt(0) - _codea + 26;
+ }
- return 63;
+ if(c >= '0' && c <= '9')
+ {
+ return c.charCodeAt(0) - _code0 + 52;
}
- Ice.Base64 = Base64;
- global.Ice = Ice;
-}(typeof (global) === "undefined" ? window : global));
+ if(c == '+')
+ {
+ return 62;
+ }
+
+ return 63;
+}
+
+Ice.Base64 = Base64;
+module.exports.Ice = Ice;