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