source: node_modules/pg-int8/index.js@ 6c7cfa6

main
Last change on this file since 6c7cfa6 was 62b2964, checked in by Klimentina Efremova <klimentina08642@…>, 2 weeks ago

Project Handcraft Marketplace

  • Property mode set to 100644
File size: 1.5 KB
Line 
1'use strict';
2
3// selected so (BASE - 1) * 0x100000000 + 0xffffffff is a safe integer
4var BASE = 1000000;
5
6function readInt8(buffer) {
7 var high = buffer.readInt32BE(0);
8 var low = buffer.readUInt32BE(4);
9 var sign = '';
10
11 if (high < 0) {
12 high = ~high + (low === 0);
13 low = (~low + 1) >>> 0;
14 sign = '-';
15 }
16
17 var result = '';
18 var carry;
19 var t;
20 var digits;
21 var pad;
22 var l;
23 var i;
24
25 {
26 carry = high % BASE;
27 high = high / BASE >>> 0;
28
29 t = 0x100000000 * carry + low;
30 low = t / BASE >>> 0;
31 digits = '' + (t - BASE * low);
32
33 if (low === 0 && high === 0) {
34 return sign + digits + result;
35 }
36
37 pad = '';
38 l = 6 - digits.length;
39
40 for (i = 0; i < l; i++) {
41 pad += '0';
42 }
43
44 result = pad + digits + result;
45 }
46
47 {
48 carry = high % BASE;
49 high = high / BASE >>> 0;
50
51 t = 0x100000000 * carry + low;
52 low = t / BASE >>> 0;
53 digits = '' + (t - BASE * low);
54
55 if (low === 0 && high === 0) {
56 return sign + digits + result;
57 }
58
59 pad = '';
60 l = 6 - digits.length;
61
62 for (i = 0; i < l; i++) {
63 pad += '0';
64 }
65
66 result = pad + digits + result;
67 }
68
69 {
70 carry = high % BASE;
71 high = high / BASE >>> 0;
72
73 t = 0x100000000 * carry + low;
74 low = t / BASE >>> 0;
75 digits = '' + (t - BASE * low);
76
77 if (low === 0 && high === 0) {
78 return sign + digits + result;
79 }
80
81 pad = '';
82 l = 6 - digits.length;
83
84 for (i = 0; i < l; i++) {
85 pad += '0';
86 }
87
88 result = pad + digits + result;
89 }
90
91 {
92 carry = high % BASE;
93 t = 0x100000000 * carry + low;
94 digits = '' + t % BASE;
95
96 return sign + digits + result;
97 }
98}
99
100module.exports = readInt8;
Note: See TracBrowser for help on using the repository browser.