1ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com 2ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com/* 3ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com * Copyright 2006 The Android Open Source Project 4ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com * 5ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com * Use of this source code is governed by a BSD-style license that can be 6ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com * found in the LICENSE file. 7ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com */ 8ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com 98a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com 108a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#include "SkXMLParser.h" 118a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com 128a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.comstatic char const* const gErrorStrings[] = { 138a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com "empty or missing file ", 148a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com "unknown element ", 158a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com "unknown attribute name ", 168a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com "error in attribute value ", 178a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com "duplicate ID ", 188a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com "unknown error " 198a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com}; 208a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com 218a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.comSkXMLParserError::SkXMLParserError() : fCode(kNoError), fLineNumber(-1), 228a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com fNativeCode(-1) 238a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com{ 248a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com reset(); 258a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com} 268a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com 278a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.comSkXMLParserError::~SkXMLParserError() 288a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com{ 298a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com // need a virtual destructor for our subclasses 308a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com} 318a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com 328a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.comvoid SkXMLParserError::getErrorString(SkString* str) const 338a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com{ 348a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com SkASSERT(str); 358a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com SkString temp; 368a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com if (fCode != kNoError) { 378a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com if ((unsigned)fCode < SK_ARRAY_COUNT(gErrorStrings)) 388a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com temp.set(gErrorStrings[fCode - 1]); 398a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com temp.append(fNoun); 408a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com } else 418a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com SkXMLParser::GetNativeErrorString(fNativeCode, &temp); 428a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com str->append(temp); 438a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com} 448a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com 458a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.comvoid SkXMLParserError::reset() { 468a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com fCode = kNoError; 478a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com fLineNumber = -1; 488a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com fNativeCode = -1; 498a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com} 508a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com 518a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com 528a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com//////////////// 538a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com 548a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.comSkXMLParser::SkXMLParser(SkXMLParserError* parserError) : fParser(NULL), fError(parserError) 558a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com{ 568a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com} 578a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com 588a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.comSkXMLParser::~SkXMLParser() 598a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com{ 608a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com} 618a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com 628a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.combool SkXMLParser::startElement(const char elem[]) 638a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com{ 648a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com return this->onStartElement(elem); 658a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com} 668a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com 678a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.combool SkXMLParser::addAttribute(const char name[], const char value[]) 688a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com{ 698a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com return this->onAddAttribute(name, value); 708a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com} 718a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com 728a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.combool SkXMLParser::endElement(const char elem[]) 738a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com{ 748a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com return this->onEndElement(elem); 758a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com} 768a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com 77d6176b0dcacb124539e0cfd051e6d93a9782f020rmistry@google.combool SkXMLParser::text(const char text[], int len) 788a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com{ 798a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com return this->onText(text, len); 808a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com} 818a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com 828a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com//////////////////////////////////////////////////////////////////////////////// 838a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com 848a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.combool SkXMLParser::onStartElement(const char elem[]) {return false; } 858a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.combool SkXMLParser::onAddAttribute(const char name[], const char value[]) {return false; } 868a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.combool SkXMLParser::onEndElement(const char elem[]) { return false; } 878a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.combool SkXMLParser::onText(const char text[], int len) {return false; } 88