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

Side by Side Diff: src/unicode.h

Issue 12427: Merge regexp2000 back into bleeding_edge (Closed) Base URL: http://v8.googlecode.com/svn/branches/bleeding_edge/
Patch Set: Created 12 years 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 | Annotate | Revision Log
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 15 matching lines...) Expand all
73 // map differently depending on context are always looked up. 73 // map differently depending on context are always looked up.
74 template <class T, int size = 256> 74 template <class T, int size = 256>
75 class Mapping { 75 class Mapping {
76 public: 76 public:
77 inline Mapping() { } 77 inline Mapping() { }
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_(kNoChar), 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_;
88 signed offset_ : 11; 88 signed offset_;
89 static const int kNoChar = (1 << 21) - 1;
89 }; 90 };
90 static const int kSize = size; 91 static const int kSize = size;
91 static const int kMask = kSize - 1; 92 static const int kMask = kSize - 1;
92 CacheEntry entries_[kSize]; 93 CacheEntry entries_[kSize];
93 }; 94 };
94 95
95 class UnicodeData { 96 class UnicodeData {
96 private: 97 private:
97 friend class Test; 98 friend class Test;
98 static int GetByteCount(); 99 static int GetByteCount();
(...skipping 116 matching lines...) Expand 10 before | Expand all | Expand 10 after
215 }; 216 };
216 struct Lowercase { 217 struct Lowercase {
217 static bool Is(uchar c); 218 static bool Is(uchar c);
218 }; 219 };
219 struct Letter { 220 struct Letter {
220 static bool Is(uchar c); 221 static bool Is(uchar c);
221 }; 222 };
222 struct Space { 223 struct Space {
223 static bool Is(uchar c); 224 static bool Is(uchar c);
224 }; 225 };
225 struct Titlecase {
226 static bool Is(uchar c);
227 };
228 struct Number { 226 struct Number {
229 static bool Is(uchar c); 227 static bool Is(uchar c);
230 }; 228 };
231 struct DecimalDigit {
232 static bool Is(uchar c);
233 };
234 struct Ideographic {
235 static bool Is(uchar c);
236 };
237 struct WhiteSpace { 229 struct WhiteSpace {
238 static bool Is(uchar c); 230 static bool Is(uchar c);
239 }; 231 };
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 { 232 struct LineTerminator {
259 static bool Is(uchar c); 233 static bool Is(uchar c);
260 }; 234 };
261 struct RegExpSpecialChar {
262 static bool Is(uchar c);
263 };
264 struct CombiningMark { 235 struct CombiningMark {
265 static bool Is(uchar c); 236 static bool Is(uchar c);
266 }; 237 };
267 struct ConnectorPunctuation { 238 struct ConnectorPunctuation {
268 static bool Is(uchar c); 239 static bool Is(uchar c);
269 }; 240 };
270 struct ToLowercase { 241 struct ToLowercase {
242 static const int kMaxWidth = 3;
271 static int Convert(uchar c, 243 static int Convert(uchar c,
272 uchar n, 244 uchar n,
273 uchar* result, 245 uchar* result,
274 bool* allow_caching_ptr); 246 bool* allow_caching_ptr);
275 }; 247 };
276 struct ToUppercase { 248 struct ToUppercase {
249 static const int kMaxWidth = 3;
250 static int Convert(uchar c,
251 uchar n,
252 uchar* result,
253 bool* allow_caching_ptr);
254 };
255 struct Ecma262Canonicalize {
256 static const int kMaxWidth = 1;
257 static int Convert(uchar c,
258 uchar n,
259 uchar* result,
260 bool* allow_caching_ptr);
261 };
262 struct Ecma262UnCanonicalize {
263 static const int kMaxWidth = 4;
264 static int Convert(uchar c,
265 uchar n,
266 uchar* result,
267 bool* allow_caching_ptr);
268 };
269 struct CanonicalizationRange {
270 static const int kMaxWidth = 1;
277 static int Convert(uchar c, 271 static int Convert(uchar c,
278 uchar n, 272 uchar n,
279 uchar* result, 273 uchar* result,
280 bool* allow_caching_ptr); 274 bool* allow_caching_ptr);
281 }; 275 };
282 276
283 } // namespace unibrow 277 } // namespace unibrow
284 278
285 #endif // __UNIBROW_H__ 279 #endif // __UNIBROW_H__
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698