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

Side by Side Diff: third_party/re2/util/rune.cc

Issue 1530113002: Revert of Update re2 (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 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
« no previous file with comments | « third_party/re2/util/pcre.cc ('k') | third_party/re2/util/sparse_array.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * The authors of this software are Rob Pike and Ken Thompson. 2 * The authors of this software are Rob Pike and Ken Thompson.
3 * Copyright (c) 2002 by Lucent Technologies. 3 * Copyright (c) 2002 by Lucent Technologies.
4 * Permission to use, copy, modify, and distribute this software for any 4 * Permission to use, copy, modify, and distribute this software for any
5 * purpose without fee is hereby granted, provided that this entire notice 5 * purpose without fee is hereby granted, provided that this entire notice
6 * is included in all copies of any software which is or includes a copy 6 * is included in all copies of any software which is or includes a copy
7 * or modification of this software and in all copies of the supporting 7 * or modification of this software and in all copies of the supporting
8 * documentation for such software. 8 * documentation for such software.
9 * THIS SOFTWARE IS BEING PROVIDED "AS IS", WITHOUT ANY EXPRESS OR IMPLIED 9 * THIS SOFTWARE IS BEING PROVIDED "AS IS", WITHOUT ANY EXPRESS OR IMPLIED
10 * WARRANTY. IN PARTICULAR, NEITHER THE AUTHORS NOR LUCENT TECHNOLOGIES MAKE AN Y 10 * WARRANTY. IN PARTICULAR, NEITHER THE AUTHORS NOR LUCENT TECHNOLOGIES MAKE AN Y
(...skipping 115 matching lines...) Expand 10 before | Expand all | Expand 10 after
126 { 126 {
127 /* Runes are signed, so convert to unsigned for range check. */ 127 /* Runes are signed, so convert to unsigned for range check. */
128 unsigned long c; 128 unsigned long c;
129 129
130 /* 130 /*
131 * one character sequence 131 * one character sequence
132 * 00000-0007F => 00-7F 132 * 00000-0007F => 00-7F
133 */ 133 */
134 c = *rune; 134 c = *rune;
135 if(c <= Rune1) { 135 if(c <= Rune1) {
136 » » str[0] = static_cast<char>(c); 136 » » str[0] = c;
137 return 1; 137 return 1;
138 } 138 }
139 139
140 /* 140 /*
141 * two character sequence 141 * two character sequence
142 * 0080-07FF => T2 Tx 142 * 0080-07FF => T2 Tx
143 */ 143 */
144 if(c <= Rune2) { 144 if(c <= Rune2) {
145 » » str[0] = T2 | static_cast<char>(c >> 1*Bitx); 145 » » str[0] = T2 | (c >> 1*Bitx);
146 str[1] = Tx | (c & Maskx); 146 str[1] = Tx | (c & Maskx);
147 return 2; 147 return 2;
148 } 148 }
149 149
150 /* 150 /*
151 * If the Rune is out of range, convert it to the error rune. 151 * If the Rune is out of range, convert it to the error rune.
152 * Do this test here because the error rune encodes to three bytes. 152 * Do this test here because the error rune encodes to three bytes.
153 * Doing it earlier would duplicate work, since an out of range 153 * Doing it earlier would duplicate work, since an out of range
154 * Rune wouldn't have fit in one or two bytes. 154 * Rune wouldn't have fit in one or two bytes.
155 */ 155 */
156 if (c > Runemax) 156 if (c > Runemax)
157 c = Runeerror; 157 c = Runeerror;
158 158
159 /* 159 /*
160 * three character sequence 160 * three character sequence
161 * 0800-FFFF => T3 Tx Tx 161 * 0800-FFFF => T3 Tx Tx
162 */ 162 */
163 if (c <= Rune3) { 163 if (c <= Rune3) {
164 » » str[0] = T3 | static_cast<char>(c >> 2*Bitx); 164 » » str[0] = T3 | (c >> 2*Bitx);
165 str[1] = Tx | ((c >> 1*Bitx) & Maskx); 165 str[1] = Tx | ((c >> 1*Bitx) & Maskx);
166 » » str[2] = Tx | (c & Maskx); 166 » » str[2] = Tx | (c & Maskx);
167 return 3; 167 return 3;
168 } 168 }
169 169
170 /* 170 /*
171 * four character sequence (21-bit value) 171 * four character sequence (21-bit value)
172 * 10000-1FFFFF => T4 Tx Tx Tx 172 * 10000-1FFFFF => T4 Tx Tx Tx
173 */ 173 */
174 » str[0] = T4 | static_cast<char>(c >> 3*Bitx); 174 » str[0] = T4 | (c >> 3*Bitx);
175 str[1] = Tx | ((c >> 2*Bitx) & Maskx); 175 str[1] = Tx | ((c >> 2*Bitx) & Maskx);
176 str[2] = Tx | ((c >> 1*Bitx) & Maskx); 176 str[2] = Tx | ((c >> 1*Bitx) & Maskx);
177 str[3] = Tx | (c & Maskx); 177 str[3] = Tx | (c & Maskx);
178 return 4; 178 return 4;
179 } 179 }
180 180
181 int 181 int
182 runelen(Rune rune) 182 runelen(Rune rune)
183 { 183 {
184 char str[10]; 184 char str[10];
(...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after
249 } 249 }
250 n = chartorune(&r, s); 250 n = chartorune(&r, s);
251 if(r == c) 251 if(r == c)
252 return (char*)s; 252 return (char*)s;
253 s += n; 253 s += n;
254 } 254 }
255 return 0; 255 return 0;
256 } 256 }
257 257
258 } // namespace re2 258 } // namespace re2
OLDNEW
« no previous file with comments | « third_party/re2/util/pcre.cc ('k') | third_party/re2/util/sparse_array.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698