Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(134)

Side by Side Diff: test/codegen/expect/collection/src/comparators.js

Issue 1879373004: Implement modular compilation (Closed) Base URL: git@github.com:dart-lang/dev_compiler.git@master
Patch Set: Created 4 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
1 dart_library.library('collection/src/comparators', null, /* Imports */[
2 'dart/_runtime',
3 'dart/core'
4 ], /* Lazy imports */[
5 ], function(exports, dart, core) {
6 'use strict';
7 let dartx = dart.dartx;
8 const _zero = 48;
9 const _upperCaseA = 65;
10 const _upperCaseZ = 90;
11 const _lowerCaseA = 97;
12 const _lowerCaseZ = 122;
13 const _asciiCaseBit = 32;
14 function equalsIgnoreAsciiCase(a, b) {
15 if (a[dartx.length] != b[dartx.length]) return false;
16 for (let i = 0; i < dart.notNull(a[dartx.length]); i++) {
17 let aChar = a[dartx.codeUnitAt](i);
18 let bChar = b[dartx.codeUnitAt](i);
19 if (aChar == bChar) continue;
20 if ((dart.notNull(aChar) ^ dart.notNull(bChar)) != _asciiCaseBit) return f alse;
21 let aCharUpperCase = dart.notNull(aChar) | dart.notNull(_asciiCaseBit);
22 if (dart.notNull(_upperCaseA) <= aCharUpperCase && aCharUpperCase <= dart. notNull(_upperCaseZ)) {
23 continue;
24 }
25 return false;
26 }
27 return true;
28 }
29 dart.fn(equalsIgnoreAsciiCase, core.bool, [core.String, core.String]);
30 function hashIgnoreAsciiCase(string) {
31 let hash = 0;
32 for (let i = 0; i < dart.notNull(string[dartx.length]); i++) {
33 let char = string[dartx.codeUnitAt](i);
34 if (dart.notNull(_lowerCaseA) <= dart.notNull(char) && dart.notNull(char) <= dart.notNull(_lowerCaseZ)) {
35 char = dart.notNull(char) - dart.notNull(_asciiCaseBit);
36 }
37 hash = 536870911 & hash + dart.notNull(char);
38 hash = 536870911 & hash + ((524287 & hash) << 10);
39 hash = hash >> 6;
40 }
41 hash = 536870911 & hash + ((67108863 & hash) << 3);
42 hash = hash >> 11;
43 return 536870911 & hash + ((16383 & hash) << 15);
44 }
45 dart.fn(hashIgnoreAsciiCase, core.int, [core.String]);
46 function compareAsciiUpperCase(a, b) {
47 let defaultResult = 0;
48 for (let i = 0; i < dart.notNull(a[dartx.length]); i++) {
49 if (i >= dart.notNull(b[dartx.length])) return 1;
50 let aChar = a[dartx.codeUnitAt](i);
51 let bChar = b[dartx.codeUnitAt](i);
52 if (aChar == bChar) continue;
53 let aUpperCase = aChar;
54 let bUpperCase = bChar;
55 if (dart.notNull(_lowerCaseA) <= dart.notNull(aChar) && dart.notNull(aChar ) <= dart.notNull(_lowerCaseZ)) {
56 aUpperCase = dart.notNull(aUpperCase) - dart.notNull(_asciiCaseBit);
57 }
58 if (dart.notNull(_lowerCaseA) <= dart.notNull(bChar) && dart.notNull(bChar ) <= dart.notNull(_lowerCaseZ)) {
59 bUpperCase = dart.notNull(bUpperCase) - dart.notNull(_asciiCaseBit);
60 }
61 if (aUpperCase != bUpperCase) return (dart.notNull(aUpperCase) - dart.notN ull(bUpperCase))[dartx.sign];
62 if (defaultResult == 0) defaultResult = dart.notNull(aChar) - dart.notNull (bChar);
63 }
64 if (dart.notNull(b[dartx.length]) > dart.notNull(a[dartx.length])) return -1 ;
65 return defaultResult[dartx.sign];
66 }
67 dart.fn(compareAsciiUpperCase, core.int, [core.String, core.String]);
68 function compareAsciiLowerCase(a, b) {
69 let defaultResult = 0;
70 for (let i = 0; i < dart.notNull(a[dartx.length]); i++) {
71 if (i >= dart.notNull(b[dartx.length])) return 1;
72 let aChar = a[dartx.codeUnitAt](i);
73 let bChar = b[dartx.codeUnitAt](i);
74 if (aChar == bChar) continue;
75 let aLowerCase = aChar;
76 let bLowerCase = bChar;
77 if (dart.notNull(_upperCaseA) <= dart.notNull(bChar) && dart.notNull(bChar ) <= dart.notNull(_upperCaseZ)) {
78 bLowerCase = dart.notNull(bLowerCase) + dart.notNull(_asciiCaseBit);
79 }
80 if (dart.notNull(_upperCaseA) <= dart.notNull(aChar) && dart.notNull(aChar ) <= dart.notNull(_upperCaseZ)) {
81 aLowerCase = dart.notNull(aLowerCase) + dart.notNull(_asciiCaseBit);
82 }
83 if (aLowerCase != bLowerCase) return (dart.notNull(aLowerCase) - dart.notN ull(bLowerCase))[dartx.sign];
84 if (defaultResult == 0) defaultResult = dart.notNull(aChar) - dart.notNull (bChar);
85 }
86 if (dart.notNull(b[dartx.length]) > dart.notNull(a[dartx.length])) return -1 ;
87 return defaultResult[dartx.sign];
88 }
89 dart.fn(compareAsciiLowerCase, core.int, [core.String, core.String]);
90 function compareNatural(a, b) {
91 for (let i = 0; i < dart.notNull(a[dartx.length]); i++) {
92 if (i >= dart.notNull(b[dartx.length])) return 1;
93 let aChar = a[dartx.codeUnitAt](i);
94 let bChar = b[dartx.codeUnitAt](i);
95 if (aChar != bChar) {
96 return _compareNaturally(a, b, i, aChar, bChar);
97 }
98 }
99 if (dart.notNull(b[dartx.length]) > dart.notNull(a[dartx.length])) return -1 ;
100 return 0;
101 }
102 dart.fn(compareNatural, core.int, [core.String, core.String]);
103 function compareAsciiLowerCaseNatural(a, b) {
104 let defaultResult = 0;
105 for (let i = 0; i < dart.notNull(a[dartx.length]); i++) {
106 if (i >= dart.notNull(b[dartx.length])) return 1;
107 let aChar = a[dartx.codeUnitAt](i);
108 let bChar = b[dartx.codeUnitAt](i);
109 if (aChar == bChar) continue;
110 let aLowerCase = aChar;
111 let bLowerCase = bChar;
112 if (dart.notNull(_upperCaseA) <= dart.notNull(aChar) && dart.notNull(aChar ) <= dart.notNull(_upperCaseZ)) {
113 aLowerCase = dart.notNull(aLowerCase) + dart.notNull(_asciiCaseBit);
114 }
115 if (dart.notNull(_upperCaseA) <= dart.notNull(bChar) && dart.notNull(bChar ) <= dart.notNull(_upperCaseZ)) {
116 bLowerCase = dart.notNull(bLowerCase) + dart.notNull(_asciiCaseBit);
117 }
118 if (aLowerCase != bLowerCase) {
119 return _compareNaturally(a, b, i, aLowerCase, bLowerCase);
120 }
121 if (defaultResult == 0) defaultResult = dart.notNull(aChar) - dart.notNull (bChar);
122 }
123 if (dart.notNull(b[dartx.length]) > dart.notNull(a[dartx.length])) return -1 ;
124 return defaultResult[dartx.sign];
125 }
126 dart.fn(compareAsciiLowerCaseNatural, core.int, [core.String, core.String]);
127 function compareAsciiUpperCaseNatural(a, b) {
128 let defaultResult = 0;
129 for (let i = 0; i < dart.notNull(a[dartx.length]); i++) {
130 if (i >= dart.notNull(b[dartx.length])) return 1;
131 let aChar = a[dartx.codeUnitAt](i);
132 let bChar = b[dartx.codeUnitAt](i);
133 if (aChar == bChar) continue;
134 let aUpperCase = aChar;
135 let bUpperCase = bChar;
136 if (dart.notNull(_lowerCaseA) <= dart.notNull(aChar) && dart.notNull(aChar ) <= dart.notNull(_lowerCaseZ)) {
137 aUpperCase = dart.notNull(aUpperCase) - dart.notNull(_asciiCaseBit);
138 }
139 if (dart.notNull(_lowerCaseA) <= dart.notNull(bChar) && dart.notNull(bChar ) <= dart.notNull(_lowerCaseZ)) {
140 bUpperCase = dart.notNull(bUpperCase) - dart.notNull(_asciiCaseBit);
141 }
142 if (aUpperCase != bUpperCase) {
143 return _compareNaturally(a, b, i, aUpperCase, bUpperCase);
144 }
145 if (defaultResult == 0) defaultResult = dart.notNull(aChar) - dart.notNull (bChar);
146 }
147 if (dart.notNull(b[dartx.length]) > dart.notNull(a[dartx.length])) return -1 ;
148 return defaultResult[dartx.sign];
149 }
150 dart.fn(compareAsciiUpperCaseNatural, core.int, [core.String, core.String]);
151 function _compareNaturally(a, b, index, aChar, bChar) {
152 dart.assert(aChar != bChar);
153 let aIsDigit = _isDigit(aChar);
154 let bIsDigit = _isDigit(bChar);
155 if (dart.notNull(aIsDigit)) {
156 if (dart.notNull(bIsDigit)) {
157 return _compareNumerically(a, b, aChar, bChar, index);
158 } else if (dart.notNull(index) > 0 && dart.notNull(_isDigit(a[dartx.codeUn itAt](dart.notNull(index) - 1)))) {
159 return 1;
160 }
161 } else if (dart.notNull(bIsDigit) && dart.notNull(index) > 0 && dart.notNull (_isDigit(b[dartx.codeUnitAt](dart.notNull(index) - 1)))) {
162 return -1;
163 }
164 return (dart.notNull(aChar) - dart.notNull(bChar))[dartx.sign];
165 }
166 dart.fn(_compareNaturally, core.int, [core.String, core.String, core.int, core .int, core.int]);
167 function _compareNumerically(a, b, aChar, bChar, index) {
168 if (dart.notNull(_isNonZeroNumberSuffix(a, index))) {
169 let result = _compareDigitCount(a, b, index, index);
170 if (result != 0) return result;
171 return (dart.notNull(aChar) - dart.notNull(bChar))[dartx.sign];
172 }
173 let aIndex = index;
174 let bIndex = index;
175 if (aChar == _zero) {
176 do {
177 aIndex = dart.notNull(aIndex) + 1;
178 if (aIndex == a[dartx.length]) return -1;
179 aChar = a[dartx.codeUnitAt](aIndex);
180 } while (aChar == _zero);
181 if (!dart.notNull(_isDigit(aChar))) return -1;
182 } else if (bChar == _zero) {
183 do {
184 bIndex = dart.notNull(bIndex) + 1;
185 if (bIndex == b[dartx.length]) return 1;
186 bChar = b[dartx.codeUnitAt](bIndex);
187 } while (bChar == _zero);
188 if (!dart.notNull(_isDigit(bChar))) return 1;
189 }
190 if (aChar != bChar) {
191 let result = _compareDigitCount(a, b, aIndex, bIndex);
192 if (result != 0) return result;
193 return (dart.notNull(aChar) - dart.notNull(bChar))[dartx.sign];
194 }
195 while (true) {
196 let aIsDigit = false;
197 let bIsDigit = false;
198 aChar = 0;
199 bChar = 0;
200 if ((aIndex = dart.notNull(aIndex) + 1) < dart.notNull(a[dartx.length])) {
201 aChar = a[dartx.codeUnitAt](aIndex);
202 aIsDigit = _isDigit(aChar);
203 }
204 if ((bIndex = dart.notNull(bIndex) + 1) < dart.notNull(b[dartx.length])) {
205 bChar = b[dartx.codeUnitAt](bIndex);
206 bIsDigit = _isDigit(bChar);
207 }
208 if (dart.notNull(aIsDigit)) {
209 if (dart.notNull(bIsDigit)) {
210 if (aChar == bChar) continue;
211 break;
212 }
213 return 1;
214 } else if (dart.notNull(bIsDigit)) {
215 return -1;
216 } else {
217 return (dart.notNull(aIndex) - dart.notNull(bIndex))[dartx.sign];
218 }
219 }
220 let result = _compareDigitCount(a, b, aIndex, bIndex);
221 if (result != 0) return result;
222 return (dart.notNull(aChar) - dart.notNull(bChar))[dartx.sign];
223 }
224 dart.fn(_compareNumerically, core.int, [core.String, core.String, core.int, co re.int, core.int]);
225 function _compareDigitCount(a, b, i, j) {
226 while ((i = dart.notNull(i) + 1) < dart.notNull(a[dartx.length])) {
227 let aIsDigit = _isDigit(a[dartx.codeUnitAt](i));
228 if ((j = dart.notNull(j) + 1) == b[dartx.length]) return dart.notNull(aIsD igit) ? 1 : 0;
229 let bIsDigit = _isDigit(b[dartx.codeUnitAt](j));
230 if (dart.notNull(aIsDigit)) {
231 if (dart.notNull(bIsDigit)) continue;
232 return 1;
233 } else if (dart.notNull(bIsDigit)) {
234 return -1;
235 } else {
236 return 0;
237 }
238 }
239 if ((j = dart.notNull(j) + 1) < dart.notNull(b[dartx.length]) && dart.notNul l(_isDigit(b[dartx.codeUnitAt](j)))) {
240 return -1;
241 }
242 return 0;
243 }
244 dart.fn(_compareDigitCount, core.int, [core.String, core.String, core.int, cor e.int]);
245 function _isDigit(charCode) {
246 return (dart.notNull(charCode) ^ dart.notNull(_zero)) <= 9;
247 }
248 dart.fn(_isDigit, core.bool, [core.int]);
249 function _isNonZeroNumberSuffix(string, index) {
250 while ((index = dart.notNull(index) - 1) >= 0) {
251 let char = string[dartx.codeUnitAt](index);
252 if (char != _zero) return _isDigit(char);
253 }
254 return false;
255 }
256 dart.fn(_isNonZeroNumberSuffix, core.bool, [core.String, core.int]);
257 // Exports:
258 exports.equalsIgnoreAsciiCase = equalsIgnoreAsciiCase;
259 exports.hashIgnoreAsciiCase = hashIgnoreAsciiCase;
260 exports.compareAsciiUpperCase = compareAsciiUpperCase;
261 exports.compareAsciiLowerCase = compareAsciiLowerCase;
262 exports.compareNatural = compareNatural;
263 exports.compareAsciiLowerCaseNatural = compareAsciiLowerCaseNatural;
264 exports.compareAsciiUpperCaseNatural = compareAsciiUpperCaseNatural;
265 });
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698