OLD | NEW |
---|---|
1 /* | 1 /* |
2 * Copyright (C) 2011 Google Inc. All rights reserved. | 2 * Copyright (C) 2011 Google Inc. 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 are | 5 * modification, are permitted provided that the following conditions are |
6 * met: | 6 * met: |
7 * | 7 * |
8 * * Redistributions of source code must retain the above copyright | 8 * * Redistributions of source code must retain the above copyright |
9 * notice, this list of conditions and the following disclaimer. | 9 * notice, this list of conditions and the following disclaimer. |
10 * * Redistributions in binary form must reproduce the above | 10 * * Redistributions in binary form must reproduce the above |
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
49 class VTTToken { | 49 class VTTToken { |
50 WTF_MAKE_NONCOPYABLE(VTTToken); | 50 WTF_MAKE_NONCOPYABLE(VTTToken); |
51 WTF_MAKE_FAST_ALLOCATED; | 51 WTF_MAKE_FAST_ALLOCATED; |
52 public: | 52 public: |
53 typedef VTTTokenTypes Type; | 53 typedef VTTTokenTypes Type; |
54 | 54 |
55 VTTToken() { clear(); } | 55 VTTToken() { clear(); } |
56 | 56 |
57 void appendToName(UChar character) | 57 void appendToName(UChar character) |
58 { | 58 { |
59 ASSERT(m_type == VTTTokenTypes::StartTag || m_type == VTTTokenTypes::End Tag); | |
60 ASSERT(character); | 59 ASSERT(character); |
61 m_data.append(character); | 60 m_data.append(character); |
62 } | 61 } |
63 | 62 |
64 Type::Type type() const { return m_type; } | 63 Type::Type type() const { return m_type; } |
64 void setType(Type::Type type) { m_type = type; } | |
65 | 65 |
66 StringBuilder& name() | 66 StringBuilder& name() |
67 { | 67 { |
68 return m_data; | 68 return m_data; |
69 } | 69 } |
70 | 70 |
71 StringBuilder& characters() | 71 StringBuilder& characters() |
72 { | 72 { |
73 ASSERT(m_type == Type::Character || m_type == Type::TimestampTag); | |
74 return m_data; | 73 return m_data; |
75 } | 74 } |
76 | 75 |
77 // Starting a character token works slightly differently than starting | |
78 // other types of tokens because we want to save a per-character branch. | |
79 void ensureIsCharacterToken() | |
80 { | |
81 ASSERT(m_type == Type::Uninitialized || m_type == Type::Character); | |
82 m_type = Type::Character; | |
83 } | |
84 | |
85 void appendToCharacter(char character) | 76 void appendToCharacter(char character) |
86 { | 77 { |
87 ASSERT(m_type == Type::Character); | |
88 m_data.append(character); | 78 m_data.append(character); |
89 } | 79 } |
90 | 80 |
91 void appendToCharacter(UChar character) | 81 void appendToCharacter(UChar character) |
92 { | 82 { |
93 ASSERT(m_type == Type::Character); | |
94 m_data.append(character); | 83 m_data.append(character); |
95 } | 84 } |
96 | 85 |
97 void appendToCharacter(const StringBuilder& characters) | 86 void appendToCharacter(const StringBuilder& characters) |
98 { | 87 { |
99 ASSERT(m_type == Type::Character); | |
100 m_data.append(characters); | 88 m_data.append(characters); |
101 } | 89 } |
102 | 90 |
103 void beginEmptyStartTag() | 91 void beginEmptyStartTag() |
104 { | 92 { |
105 ASSERT(m_type == Type::Uninitialized); | |
106 m_type = Type::StartTag; | |
107 m_data.clear(); | 93 m_data.clear(); |
108 } | 94 } |
109 | 95 |
110 void beginStartTag(UChar character) | 96 void beginStartTag(UChar character) |
111 { | 97 { |
112 ASSERT(character); | 98 ASSERT(character); |
113 ASSERT(m_type == Type::Uninitialized); | |
114 m_type = Type::StartTag; | |
115 m_data.append(character); | 99 m_data.append(character); |
116 } | 100 } |
117 | 101 |
118 void beginEndTag(LChar character) | 102 void beginEndTag(LChar character) |
119 { | 103 { |
120 ASSERT(m_type == Type::Uninitialized); | |
121 m_type = Type::EndTag; | |
122 m_data.append(character); | 104 m_data.append(character); |
123 } | 105 } |
124 | 106 |
125 void beginTimestampTag(UChar character) | 107 void beginTimestampTag(UChar character) |
jochen (gone - plz use gerrit)
2013/11/20 14:09:37
what's the point of having all this different meth
| |
126 { | 108 { |
127 ASSERT(character); | 109 ASSERT(character); |
128 ASSERT(m_type == Type::Uninitialized); | |
129 m_type = Type::TimestampTag; | |
130 m_data.append(character); | 110 m_data.append(character); |
131 } | 111 } |
132 | 112 |
133 void appendToTimestamp(UChar character) | 113 void appendToTimestamp(UChar character) |
134 { | 114 { |
135 ASSERT(character); | 115 ASSERT(character); |
136 ASSERT(m_type == Type::TimestampTag); | |
137 m_data.append(character); | 116 m_data.append(character); |
138 } | 117 } |
139 | 118 |
140 void appendToClass(UChar character) | 119 void appendToClass(UChar character) |
141 { | 120 { |
142 appendToStartType(character); | 121 appendToStartType(character); |
143 } | 122 } |
144 | 123 |
145 void addNewClass() | 124 void addNewClass() |
146 { | 125 { |
147 ASSERT(m_type == Type::StartTag); | |
148 if (!m_classes.isEmpty()) | 126 if (!m_classes.isEmpty()) |
149 m_classes.append(' '); | 127 m_classes.append(' '); |
150 m_classes.append(m_currentBuffer); | 128 m_classes.append(m_currentBuffer); |
151 m_currentBuffer.clear(); | 129 m_currentBuffer.clear(); |
152 } | 130 } |
153 | 131 |
154 StringBuilder& classes() | 132 StringBuilder& classes() |
155 { | 133 { |
156 return m_classes; | 134 return m_classes; |
157 } | 135 } |
158 | 136 |
159 void appendToAnnotation(UChar character) | 137 void appendToAnnotation(UChar character) |
160 { | 138 { |
161 appendToStartType(character); | 139 appendToStartType(character); |
162 } | 140 } |
163 | 141 |
164 void addNewAnnotation() | 142 void addNewAnnotation() |
165 { | 143 { |
166 ASSERT(m_type == Type::StartTag); | |
167 m_annotation.clear(); | 144 m_annotation.clear(); |
168 m_annotation.append(m_currentBuffer); | 145 m_annotation.append(m_currentBuffer); |
169 m_currentBuffer.clear(); | 146 m_currentBuffer.clear(); |
170 } | 147 } |
171 | 148 |
172 StringBuilder& annotation() | 149 StringBuilder& annotation() |
173 { | 150 { |
174 return m_annotation; | 151 return m_annotation; |
175 } | 152 } |
176 | 153 |
177 void clear() | 154 void clear() |
178 { | 155 { |
179 m_type = Type::Uninitialized; | 156 m_type = Type::Uninitialized; |
180 m_data.clear(); | 157 m_data.clear(); |
181 m_annotation.clear(); | 158 m_annotation.clear(); |
182 m_classes.clear(); | 159 m_classes.clear(); |
183 m_currentBuffer.clear(); | 160 m_currentBuffer.clear(); |
184 } | 161 } |
185 | 162 |
186 private: | 163 private: |
187 void appendToStartType(UChar character) | 164 void appendToStartType(UChar character) |
188 { | 165 { |
189 ASSERT(character); | 166 ASSERT(character); |
190 ASSERT(m_type == Type::StartTag); | |
191 m_currentBuffer.append(character); | 167 m_currentBuffer.append(character); |
192 } | 168 } |
193 | 169 |
194 Type::Type m_type; | 170 Type::Type m_type; |
195 StringBuilder m_data; | 171 StringBuilder m_data; |
196 StringBuilder m_annotation; | 172 StringBuilder m_annotation; |
197 StringBuilder m_classes; | 173 StringBuilder m_classes; |
198 StringBuilder m_currentBuffer; | 174 StringBuilder m_currentBuffer; |
199 }; | 175 }; |
200 | 176 |
201 } | 177 } |
202 | 178 |
203 #endif | 179 #endif |
OLD | NEW |