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

Side by Side Diff: src/unicode.h

Issue 10975: Case folding mappings (Closed)
Patch Set: Replaced case folding with canonicalization Created 12 years, 1 month 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
1 // Copyright 2007-2008 the V8 project authors. All rights reserved. 1 // Copyright 2007-2008 the V8 project authors. All rights reserved.
2 // Redistribution and use in source and binary forms, with or without 2 // Redistribution and use in source and binary forms, with or without
3 // modification, are permitted provided that the following conditions are 3 // modification, are permitted provided that the following conditions are
4 // met: 4 // met:
5 // 5 //
6 // * Redistributions of source code must retain the above copyright 6 // * Redistributions of source code must retain the above copyright
7 // notice, this list of conditions and the following disclaimer. 7 // notice, this list of conditions and the following disclaimer.
8 // * Redistributions in binary form must reproduce the above 8 // * Redistributions in binary form must reproduce the above
9 // copyright notice, this list of conditions and the following 9 // copyright notice, this list of conditions and the following
10 // disclaimer in the documentation and/or other materials provided 10 // disclaimer in the documentation and/or other materials provided
(...skipping 26 matching lines...) Expand all
37 37
38 namespace unibrow { 38 namespace unibrow {
39 39
40 typedef unsigned int uchar; 40 typedef unsigned int uchar;
41 typedef unsigned char byte; 41 typedef unsigned char byte;
42 42
43 /** 43 /**
44 * The max length of the result of converting the case of a single 44 * The max length of the result of converting the case of a single
45 * character. 45 * character.
46 */ 46 */
47 static const int kMaxCaseConvertedSize = 3; 47 static const int kMaxMappingSize = 4;
48 48
49 template <class T, int size = 256> 49 template <class T, int size = 256>
50 class Predicate { 50 class Predicate {
51 public: 51 public:
52 inline Predicate() { } 52 inline Predicate() { }
53 inline bool get(uchar c); 53 inline bool get(uchar c);
54 private: 54 private:
55 friend class Test; 55 friend class Test;
56 bool CalculateValue(uchar c); 56 bool CalculateValue(uchar c);
57 struct CacheEntry { 57 struct CacheEntry {
(...skipping 20 matching lines...) Expand all
78 inline int get(uchar c, uchar n, uchar* result); 78 inline int get(uchar c, uchar n, uchar* result);
79 private: 79 private:
80 friend class Test; 80 friend class Test;
81 int CalculateValue(uchar c, uchar n, uchar* result); 81 int CalculateValue(uchar c, uchar n, uchar* result);
82 struct CacheEntry { 82 struct CacheEntry {
83 inline CacheEntry() : code_point_(0), offset_(0) { } 83 inline CacheEntry() : code_point_(0), offset_(0) { }
84 inline CacheEntry(uchar code_point, signed offset) 84 inline CacheEntry(uchar code_point, signed offset)
85 : code_point_(code_point), 85 : code_point_(code_point),
86 offset_(offset) { } 86 offset_(offset) { }
87 uchar code_point_ : 21; 87 uchar code_point_ : 21;
88 signed offset_ : 11; 88 signed offset_ : 21;
89 }; 89 };
90 static const int kSize = size; 90 static const int kSize = size;
91 static const int kMask = kSize - 1; 91 static const int kMask = kSize - 1;
92 CacheEntry entries_[kSize]; 92 CacheEntry entries_[kSize];
93 }; 93 };
94 94
95 class UnicodeData { 95 class UnicodeData {
96 private: 96 private:
97 friend class Test; 97 friend class Test;
98 static int GetByteCount(); 98 static int GetByteCount();
(...skipping 116 matching lines...) Expand 10 before | Expand all | Expand 10 after
215 }; 215 };
216 struct Lowercase { 216 struct Lowercase {
217 static bool Is(uchar c); 217 static bool Is(uchar c);
218 }; 218 };
219 struct Letter { 219 struct Letter {
220 static bool Is(uchar c); 220 static bool Is(uchar c);
221 }; 221 };
222 struct Space { 222 struct Space {
223 static bool Is(uchar c); 223 static bool Is(uchar c);
224 }; 224 };
225 struct Titlecase {
226 static bool Is(uchar c);
227 };
228 struct Number { 225 struct Number {
229 static bool Is(uchar c); 226 static bool Is(uchar c);
230 }; 227 };
231 struct DecimalDigit {
232 static bool Is(uchar c);
233 };
234 struct Ideographic {
235 static bool Is(uchar c);
236 };
237 struct WhiteSpace { 228 struct WhiteSpace {
238 static bool Is(uchar c); 229 static bool Is(uchar c);
239 }; 230 };
240 struct HexDigit {
241 static bool Is(uchar c);
242 };
243 struct AsciiHexDigit {
244 static bool Is(uchar c);
245 };
246 struct BidiControl {
247 static bool Is(uchar c);
248 };
249 struct JoinControl {
250 static bool Is(uchar c);
251 };
252 struct Dash {
253 static bool Is(uchar c);
254 };
255 struct Hyphen {
256 static bool Is(uchar c);
257 };
258 struct LineTerminator { 231 struct LineTerminator {
259 static bool Is(uchar c); 232 static bool Is(uchar c);
260 }; 233 };
261 struct RegExpSpecialChar {
262 static bool Is(uchar c);
263 };
264 struct CombiningMark { 234 struct CombiningMark {
265 static bool Is(uchar c); 235 static bool Is(uchar c);
266 }; 236 };
267 struct ConnectorPunctuation { 237 struct ConnectorPunctuation {
268 static bool Is(uchar c); 238 static bool Is(uchar c);
269 }; 239 };
270 struct ToLowercase { 240 struct ToLowercase {
271 static int Convert(uchar c, 241 static int Convert(uchar c,
272 uchar n, 242 uchar n,
273 uchar* result, 243 uchar* result,
274 bool* allow_caching_ptr); 244 bool* allow_caching_ptr);
275 }; 245 };
276 struct ToUppercase { 246 struct ToUppercase {
277 static int Convert(uchar c, 247 static int Convert(uchar c,
278 uchar n, 248 uchar n,
279 uchar* result, 249 uchar* result,
280 bool* allow_caching_ptr); 250 bool* allow_caching_ptr);
281 }; 251 };
252 struct Ecma262Canonicalize {
253 static int Convert(uchar c,
254 uchar n,
255 uchar* result,
256 bool* allow_caching_ptr);
257 };
258 struct Ecma262UnCanonicalize {
259 static int Convert(uchar c,
260 uchar n,
261 uchar* result,
262 bool* allow_caching_ptr);
263 };
282 264
283 } // namespace unibrow 265 } // namespace unibrow
284 266
285 #endif // __UNIBROW_H__ 267 #endif // __UNIBROW_H__
OLDNEW
« no previous file with comments | « src/runtime.cc ('k') | src/unicode.cc » ('j') | test/cctest/test-regexp.cc » ('J')

Powered by Google App Engine
This is Rietveld 408576698