OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 2000 Peter Kelly (pmk@post.com) | 2 * Copyright (C) 2000 Peter Kelly (pmk@post.com) |
3 * Copyright (C) 2005, 2006, 2008, 2014 Apple Inc. All rights reserved. | 3 * Copyright (C) 2005, 2006, 2008, 2014 Apple Inc. All rights reserved. |
4 * Copyright (C) 2006 Alexey Proskuryakov (ap@webkit.org) | 4 * Copyright (C) 2006 Alexey Proskuryakov (ap@webkit.org) |
5 * Copyright (C) 2007 Samuel Weinig (sam@webkit.org) | 5 * Copyright (C) 2007 Samuel Weinig (sam@webkit.org) |
6 * Copyright (C) 2008 Nokia Corporation and/or its subsidiary(-ies) | 6 * Copyright (C) 2008 Nokia Corporation and/or its subsidiary(-ies) |
7 * Copyright (C) 2008 Holger Hans Peter Freyther | 7 * Copyright (C) 2008 Holger Hans Peter Freyther |
8 * Copyright (C) 2008 Torch Mobile Inc. All rights reserved. (http://www.torchmo
bile.com/) | 8 * Copyright (C) 2008 Torch Mobile Inc. All rights reserved. (http://www.torchmo
bile.com/) |
9 * | 9 * |
10 * This library is free software; you can redistribute it and/or | 10 * This library is free software; you can redistribute it and/or |
(...skipping 129 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
140 // Each attribute has 5 elements in the array: | 140 // Each attribute has 5 elements in the array: |
141 // name, prefix, uri, value and an end pointer. | 141 // name, prefix, uri, value and an end pointer. |
142 for (int j = 0; j < 3; ++j) | 142 for (int j = 0; j < 3; ++j) |
143 m_attributes[i * 5 + j] = xmlStrdup(attributes[i * 5 + j]); | 143 m_attributes[i * 5 + j] = xmlStrdup(attributes[i * 5 + j]); |
144 int length = attributes[i * 5 + 4] - attributes[i * 5 + 3]; | 144 int length = attributes[i * 5 + 4] - attributes[i * 5 + 3]; |
145 m_attributes[i * 5 + 3] = xmlStrndup(attributes[i * 5 + 3], length); | 145 m_attributes[i * 5 + 3] = xmlStrndup(attributes[i * 5 + 3], length); |
146 m_attributes[i * 5 + 4] = m_attributes[i * 5 + 3] + length; | 146 m_attributes[i * 5 + 4] = m_attributes[i * 5 + 3] + length; |
147 } | 147 } |
148 } | 148 } |
149 | 149 |
150 virtual ~PendingStartElementNSCallback() | 150 ~PendingStartElementNSCallback() override |
151 { | 151 { |
152 for (int i = 0; i < m_namespaceCount * 2; ++i) | 152 for (int i = 0; i < m_namespaceCount * 2; ++i) |
153 xmlFree(m_namespaces[i]); | 153 xmlFree(m_namespaces[i]); |
154 xmlFree(m_namespaces); | 154 xmlFree(m_namespaces); |
155 for (int i = 0; i < m_attributeCount; ++i) | 155 for (int i = 0; i < m_attributeCount; ++i) |
156 for (int j = 0; j < 4; ++j) | 156 for (int j = 0; j < 4; ++j) |
157 xmlFree(m_attributes[i * 5 + j]); | 157 xmlFree(m_attributes[i * 5 + j]); |
158 xmlFree(m_attributes); | 158 xmlFree(m_attributes); |
159 } | 159 } |
160 | 160 |
161 virtual void call(XMLDocumentParser* parser) override | 161 void call(XMLDocumentParser* parser) override |
162 { | 162 { |
163 parser->startElementNs(m_localName, m_prefix, m_uri, | 163 parser->startElementNs(m_localName, m_prefix, m_uri, |
164 m_namespaceCount, const_cast<const xmlChar**>(m_namespaces), | 164 m_namespaceCount, const_cast<const xmlChar**>(m_namespaces), |
165 m_attributeCount, m_defaultedCount, const_cast<const xmlChar**>(m_at
tributes)); | 165 m_attributeCount, m_defaultedCount, const_cast<const xmlChar**>(m_at
tributes)); |
166 } | 166 } |
167 | 167 |
168 private: | 168 private: |
169 AtomicString m_localName; | 169 AtomicString m_localName; |
170 AtomicString m_prefix; | 170 AtomicString m_prefix; |
171 AtomicString m_uri; | 171 AtomicString m_uri; |
172 int m_namespaceCount; | 172 int m_namespaceCount; |
173 xmlChar** m_namespaces; | 173 xmlChar** m_namespaces; |
174 int m_attributeCount; | 174 int m_attributeCount; |
175 int m_defaultedCount; | 175 int m_defaultedCount; |
176 xmlChar** m_attributes; | 176 xmlChar** m_attributes; |
177 }; | 177 }; |
178 | 178 |
179 class PendingEndElementNSCallback final : public XMLDocumentParser::PendingCallb
ack { | 179 class PendingEndElementNSCallback final : public XMLDocumentParser::PendingCallb
ack { |
180 public: | 180 public: |
181 virtual void call(XMLDocumentParser* parser) override | 181 void call(XMLDocumentParser* parser) override |
182 { | 182 { |
183 parser->endElementNs(); | 183 parser->endElementNs(); |
184 } | 184 } |
185 }; | 185 }; |
186 | 186 |
187 class PendingCharactersCallback final : public XMLDocumentParser::PendingCallbac
k { | 187 class PendingCharactersCallback final : public XMLDocumentParser::PendingCallbac
k { |
188 public: | 188 public: |
189 PendingCharactersCallback(const xmlChar* chars, int length) | 189 PendingCharactersCallback(const xmlChar* chars, int length) |
190 : m_chars(xmlStrndup(chars, length)) | 190 : m_chars(xmlStrndup(chars, length)) |
191 , m_length(length) | 191 , m_length(length) |
192 { | 192 { |
193 } | 193 } |
194 | 194 |
195 virtual ~PendingCharactersCallback() | 195 ~PendingCharactersCallback() override |
196 { | 196 { |
197 xmlFree(m_chars); | 197 xmlFree(m_chars); |
198 } | 198 } |
199 | 199 |
200 virtual void call(XMLDocumentParser* parser) override | 200 void call(XMLDocumentParser* parser) override |
201 { | 201 { |
202 parser->characters(m_chars, m_length); | 202 parser->characters(m_chars, m_length); |
203 } | 203 } |
204 | 204 |
205 private: | 205 private: |
206 xmlChar* m_chars; | 206 xmlChar* m_chars; |
207 int m_length; | 207 int m_length; |
208 }; | 208 }; |
209 | 209 |
210 class PendingProcessingInstructionCallback final : public XMLDocumentParser::Pen
dingCallback { | 210 class PendingProcessingInstructionCallback final : public XMLDocumentParser::Pen
dingCallback { |
211 public: | 211 public: |
212 PendingProcessingInstructionCallback(const String& target, const String& dat
a) | 212 PendingProcessingInstructionCallback(const String& target, const String& dat
a) |
213 : m_target(target) | 213 : m_target(target) |
214 , m_data(data) | 214 , m_data(data) |
215 { | 215 { |
216 } | 216 } |
217 | 217 |
218 virtual void call(XMLDocumentParser* parser) override | 218 void call(XMLDocumentParser* parser) override |
219 { | 219 { |
220 parser->processingInstruction(m_target, m_data); | 220 parser->processingInstruction(m_target, m_data); |
221 } | 221 } |
222 | 222 |
223 private: | 223 private: |
224 String m_target; | 224 String m_target; |
225 String m_data; | 225 String m_data; |
226 }; | 226 }; |
227 | 227 |
228 class PendingCDATABlockCallback final : public XMLDocumentParser::PendingCallbac
k { | 228 class PendingCDATABlockCallback final : public XMLDocumentParser::PendingCallbac
k { |
229 public: | 229 public: |
230 explicit PendingCDATABlockCallback(const String& text) : m_text(text) { } | 230 explicit PendingCDATABlockCallback(const String& text) : m_text(text) { } |
231 | 231 |
232 virtual void call(XMLDocumentParser* parser) override | 232 void call(XMLDocumentParser* parser) override |
233 { | 233 { |
234 parser->cdataBlock(m_text); | 234 parser->cdataBlock(m_text); |
235 } | 235 } |
236 | 236 |
237 private: | 237 private: |
238 String m_text; | 238 String m_text; |
239 }; | 239 }; |
240 | 240 |
241 class PendingCommentCallback final : public XMLDocumentParser::PendingCallback { | 241 class PendingCommentCallback final : public XMLDocumentParser::PendingCallback { |
242 public: | 242 public: |
243 explicit PendingCommentCallback(const String& text) : m_text(text) { } | 243 explicit PendingCommentCallback(const String& text) : m_text(text) { } |
244 | 244 |
245 virtual void call(XMLDocumentParser* parser) override | 245 void call(XMLDocumentParser* parser) override |
246 { | 246 { |
247 parser->comment(m_text); | 247 parser->comment(m_text); |
248 } | 248 } |
249 | 249 |
250 private: | 250 private: |
251 String m_text; | 251 String m_text; |
252 }; | 252 }; |
253 | 253 |
254 class PendingInternalSubsetCallback final : public XMLDocumentParser::PendingCal
lback { | 254 class PendingInternalSubsetCallback final : public XMLDocumentParser::PendingCal
lback { |
255 public: | 255 public: |
256 PendingInternalSubsetCallback(const String& name, const String& externalID,
const String& systemID) | 256 PendingInternalSubsetCallback(const String& name, const String& externalID,
const String& systemID) |
257 : m_name(name) | 257 : m_name(name) |
258 , m_externalID(externalID) | 258 , m_externalID(externalID) |
259 , m_systemID(systemID) | 259 , m_systemID(systemID) |
260 { | 260 { |
261 } | 261 } |
262 | 262 |
263 virtual void call(XMLDocumentParser* parser) override | 263 void call(XMLDocumentParser* parser) override |
264 { | 264 { |
265 parser->internalSubset(m_name, m_externalID, m_systemID); | 265 parser->internalSubset(m_name, m_externalID, m_systemID); |
266 } | 266 } |
267 | 267 |
268 private: | 268 private: |
269 String m_name; | 269 String m_name; |
270 String m_externalID; | 270 String m_externalID; |
271 String m_systemID; | 271 String m_systemID; |
272 }; | 272 }; |
273 | 273 |
274 class PendingErrorCallback final : public XMLDocumentParser::PendingCallback { | 274 class PendingErrorCallback final : public XMLDocumentParser::PendingCallback { |
275 public: | 275 public: |
276 PendingErrorCallback(XMLErrors::ErrorType type, const xmlChar* message, Ordi
nalNumber lineNumber, OrdinalNumber columnNumber) | 276 PendingErrorCallback(XMLErrors::ErrorType type, const xmlChar* message, Ordi
nalNumber lineNumber, OrdinalNumber columnNumber) |
277 : m_type(type) | 277 : m_type(type) |
278 , m_message(xmlStrdup(message)) | 278 , m_message(xmlStrdup(message)) |
279 , m_lineNumber(lineNumber) | 279 , m_lineNumber(lineNumber) |
280 , m_columnNumber(columnNumber) | 280 , m_columnNumber(columnNumber) |
281 { | 281 { |
282 } | 282 } |
283 | 283 |
284 virtual ~PendingErrorCallback() | 284 ~PendingErrorCallback() override |
285 { | 285 { |
286 xmlFree(m_message); | 286 xmlFree(m_message); |
287 } | 287 } |
288 | 288 |
289 virtual void call(XMLDocumentParser* parser) override | 289 void call(XMLDocumentParser* parser) override |
290 { | 290 { |
291 parser->handleError(m_type, reinterpret_cast<char*>(m_message), TextPosi
tion(m_lineNumber, m_columnNumber)); | 291 parser->handleError(m_type, reinterpret_cast<char*>(m_message), TextPosi
tion(m_lineNumber, m_columnNumber)); |
292 } | 292 } |
293 | 293 |
294 private: | 294 private: |
295 XMLErrors::ErrorType m_type; | 295 XMLErrors::ErrorType m_type; |
296 xmlChar* m_message; | 296 xmlChar* m_message; |
297 OrdinalNumber m_lineNumber; | 297 OrdinalNumber m_lineNumber; |
298 OrdinalNumber m_columnNumber; | 298 OrdinalNumber m_columnNumber; |
299 }; | 299 }; |
(...skipping 1367 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1667 sax.initialized = XML_SAX2_MAGIC; | 1667 sax.initialized = XML_SAX2_MAGIC; |
1668 RefPtr<XMLParserContext> parser = XMLParserContext::createStringParser(&sax,
&state); | 1668 RefPtr<XMLParserContext> parser = XMLParserContext::createStringParser(&sax,
&state); |
1669 String parseString = "<?xml version=\"1.0\"?><attrs " + string + " />"; | 1669 String parseString = "<?xml version=\"1.0\"?><attrs " + string + " />"; |
1670 parseChunk(parser->context(), parseString); | 1670 parseChunk(parser->context(), parseString); |
1671 finishParsing(parser->context()); | 1671 finishParsing(parser->context()); |
1672 attrsOK = state.gotAttributes; | 1672 attrsOK = state.gotAttributes; |
1673 return state.attributes; | 1673 return state.attributes; |
1674 } | 1674 } |
1675 | 1675 |
1676 } // namespace blink | 1676 } // namespace blink |
OLD | NEW |