180bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru
280bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru/*
380bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru * Copyright 2006 The Android Open Source Project
480bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru *
580bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru * Use of this source code is governed by a BSD-style license that can be
680bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru * found in the LICENSE file.
780bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru */
880bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru
980bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru
1080bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru#include "SkXMLParser.h"
1180bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru
1280bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Querustatic char const* const gErrorStrings[] = {
1380bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru    "empty or missing file ",
1480bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru    "unknown element ",
1580bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru    "unknown attribute name ",
1680bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru    "error in attribute value ",
1780bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru    "duplicate ID ",
1880bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru    "unknown error "
1980bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru};
2080bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru
2180bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste QueruSkXMLParserError::SkXMLParserError() : fCode(kNoError), fLineNumber(-1),
2280bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru    fNativeCode(-1)
2380bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru{
2480bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru    reset();
2580bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru}
2680bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru
2780bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste QueruSkXMLParserError::~SkXMLParserError()
2880bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru{
2980bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru    // need a virtual destructor for our subclasses
3080bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru}
3180bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru
3280bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queruvoid SkXMLParserError::getErrorString(SkString* str) const
3380bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru{
3480bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru    SkASSERT(str);
3580bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru    SkString temp;
3680bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru    if (fCode != kNoError) {
3780bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru        if ((unsigned)fCode < SK_ARRAY_COUNT(gErrorStrings))
3880bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru            temp.set(gErrorStrings[fCode - 1]);
3980bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru        temp.append(fNoun);
4080bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru    } else
4180bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru        SkXMLParser::GetNativeErrorString(fNativeCode, &temp);
4280bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru    str->append(temp);
4380bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru}
4480bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru
4580bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queruvoid SkXMLParserError::reset() {
4680bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru    fCode = kNoError;
4780bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru    fLineNumber = -1;
4880bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru    fNativeCode = -1;
4980bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru}
5080bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru
5180bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru
5280bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru////////////////
5380bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru
5480bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste QueruSkXMLParser::SkXMLParser(SkXMLParserError* parserError) : fParser(NULL), fError(parserError)
5580bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru{
5680bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru}
5780bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru
5880bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste QueruSkXMLParser::~SkXMLParser()
5980bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru{
6080bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru}
6180bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru
6280bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Querubool SkXMLParser::startElement(const char elem[])
6380bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru{
6480bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru    return this->onStartElement(elem);
6580bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru}
6680bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru
6780bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Querubool SkXMLParser::addAttribute(const char name[], const char value[])
6880bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru{
6980bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru    return this->onAddAttribute(name, value);
7080bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru}
7180bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru
7280bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Querubool SkXMLParser::endElement(const char elem[])
7380bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru{
7480bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru    return this->onEndElement(elem);
7580bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru}
7680bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru
7780bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Querubool SkXMLParser::text(const char text[], int len)
7880bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru{
7980bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru    return this->onText(text, len);
8080bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru}
8180bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru
8280bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru////////////////////////////////////////////////////////////////////////////////
8380bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru
8480bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Querubool SkXMLParser::onStartElement(const char elem[]) {return false; }
8580bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Querubool SkXMLParser::onAddAttribute(const char name[], const char value[]) {return false; }
8680bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Querubool SkXMLParser::onEndElement(const char elem[]) { return false; }
8780bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Querubool SkXMLParser::onText(const char text[], int len) {return false; }
88