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

Side by Side Diff: Source/core/html/track/vtt/VTTScanner.h

Issue 134153002: Use VTTScanner for VTT cue settings parsing (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Created 6 years, 11 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
1 /* 1 /*
2 * Copyright (c) 2013, Opera Software ASA. All rights reserved. 2 * Copyright (c) 2013, Opera Software ASA. All rights reserved.
3 * 3 *
4 * Redistribution and use in source and binary forms, with or without 4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions 5 * modification, are permitted provided that the following conditions
6 * are met: 6 * are met:
7 * 1. Redistributions of source code must retain the above copyright 7 * 1. Redistributions of source code must retain the above copyright
8 * notice, this list of conditions and the following disclaimer. 8 * notice, this list of conditions and the following disclaimer.
9 * 2. Redistributions in binary form must reproduce the above copyright 9 * 2. Redistributions in binary form must reproduce the above copyright
10 * notice, this list of conditions and the following disclaimer in the 10 * notice, this list of conditions and the following disclaimer in the
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
51 public: 51 public:
52 explicit VTTScanner(const String& line); 52 explicit VTTScanner(const String& line);
53 53
54 typedef const LChar* Position; 54 typedef const LChar* Position;
55 55
56 class Run { 56 class Run {
57 public: 57 public:
58 Run(Position start, Position end, bool is8Bit) 58 Run(Position start, Position end, bool is8Bit)
59 : m_start(start), m_end(end), m_is8Bit(is8Bit) { } 59 : m_start(start), m_end(end), m_is8Bit(is8Bit) { }
60 60
61 Position start() const { return m_start; }
61 Position end() const { return m_end; } 62 Position end() const { return m_end; }
62 63
63 bool isEmpty() const { return m_start == m_end; } 64 bool isEmpty() const { return m_start == m_end; }
64 size_t length() const; 65 size_t length() const;
65 66
66 private: 67 private:
67 Position m_start; 68 Position m_start;
68 Position m_end; 69 Position m_end;
69 bool m_is8Bit; 70 bool m_is8Bit;
70 }; 71 };
(...skipping 18 matching lines...) Expand all
89 // the end of the input. 90 // the end of the input.
90 template<bool characterPredicate(UChar)> 91 template<bool characterPredicate(UChar)>
91 void skipWhile(); 92 void skipWhile();
92 93
93 // Return the run of characters for which the specified 94 // Return the run of characters for which the specified
94 // |characterPredicate| returns true. The start of the run will be the 95 // |characterPredicate| returns true. The start of the run will be the
95 // current input pointer. 96 // current input pointer.
96 template<bool characterPredicate(UChar)> 97 template<bool characterPredicate(UChar)>
97 Run collectWhile(); 98 Run collectWhile();
98 99
100 // Like collectWhile, but using a negated predicate.
101 template<bool characterPredicate(UChar)>
102 Run collectUntil();
103
104 // Scan the string |toMatch|, using the specified |run| as the sequence to
105 // match against.
106 bool scanRun(const Run&, const String& toMatch);
107
108 // Skip to the end of the specified |run|.
109 void skipRun(const Run&);
110
111 // Return the String made up of the characters in |run|, and advance the
112 // input pointer to the end of the run.
113 String extractString(const Run&);
114
99 // Return a String constructed from the rest of the input (between input 115 // Return a String constructed from the rest of the input (between input
100 // pointer and end of input), and advance the input pointer accordingly. 116 // pointer and end of input), and advance the input pointer accordingly.
101 String restOfInputAsString(); 117 String restOfInputAsString();
102 118
103 // Scan a set of ASCII digits from the input. Return the number of digits 119 // Scan a set of ASCII digits from the input. Return the number of digits
104 // scanned, and set |number| to the computed value. If the digits make up a 120 // scanned, and set |number| to the computed value. If the digits make up a
105 // number that does not fit the 'int' type, |number| is set to INT_MAX. 121 // number that does not fit the 'int' type, |number| is set to INT_MAX.
106 // Note: Does not handle sign. 122 // Note: Does not handle sign.
107 unsigned scanDigits(int& number); 123 unsigned scanDigits(int& number);
108 124
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
155 if (m_is8Bit) { 171 if (m_is8Bit) {
156 const LChar* current = m_data.characters8; 172 const LChar* current = m_data.characters8;
157 ::skipWhile<LChar, LCharPredicateAdapter<characterPredicate> >(current, m_end.characters8); 173 ::skipWhile<LChar, LCharPredicateAdapter<characterPredicate> >(current, m_end.characters8);
158 return Run(position(), current, m_is8Bit); 174 return Run(position(), current, m_is8Bit);
159 } 175 }
160 const UChar* current = m_data.characters16; 176 const UChar* current = m_data.characters16;
161 ::skipWhile<UChar, characterPredicate>(current, m_end.characters16); 177 ::skipWhile<UChar, characterPredicate>(current, m_end.characters16);
162 return Run(position(), reinterpret_cast<Position>(current), m_is8Bit); 178 return Run(position(), reinterpret_cast<Position>(current), m_is8Bit);
163 } 179 }
164 180
181 template<bool characterPredicate(UChar)>
182 inline VTTScanner::Run VTTScanner::collectUntil()
183 {
184 if (m_is8Bit) {
185 const LChar* current = m_data.characters8;
186 ::skipUntil<LChar, LCharPredicateAdapter<characterPredicate> >(current, m_end.characters8);
187 return Run(position(), current, m_is8Bit);
188 }
189 const UChar* current = m_data.characters16;
190 ::skipUntil<UChar, characterPredicate>(current, m_end.characters16);
191 return Run(position(), reinterpret_cast<Position>(current), m_is8Bit);
192 }
193
165 inline void VTTScanner::seekTo(Position position) 194 inline void VTTScanner::seekTo(Position position)
166 { 195 {
167 ASSERT(position <= end()); 196 ASSERT(position <= end());
168 m_data.characters8 = position; 197 m_data.characters8 = position;
169 } 198 }
170 199
171 inline UChar VTTScanner::currentChar() const 200 inline UChar VTTScanner::currentChar() const
172 { 201 {
173 ASSERT(position() < end()); 202 ASSERT(position() < end());
174 return m_is8Bit ? *m_data.characters8 : *m_data.characters16; 203 return m_is8Bit ? *m_data.characters8 : *m_data.characters16;
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
212 unsigned* m_outPosition; 241 unsigned* m_outPosition;
213 union { 242 union {
214 const LChar* characters8; 243 const LChar* characters8;
215 const UChar* characters16; 244 const UChar* characters16;
216 } m_start; 245 } m_start;
217 }; 246 };
218 247
219 } 248 }
220 249
221 #endif 250 #endif
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698