Chromium Code Reviews| 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 |