Home | History | Annotate | Download | only in xml
      1 /* libs/graphics/xml/SkXMLParser.cpp
      2 **
      3 ** Copyright 2006, The Android Open Source Project
      4 **
      5 ** Licensed under the Apache License, Version 2.0 (the "License");
      6 ** you may not use this file except in compliance with the License.
      7 ** You may obtain a copy of the License at
      8 **
      9 **     http://www.apache.org/licenses/LICENSE-2.0
     10 **
     11 ** Unless required by applicable law or agreed to in writing, software
     12 ** distributed under the License is distributed on an "AS IS" BASIS,
     13 ** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     14 ** See the License for the specific language governing permissions and
     15 ** limitations under the License.
     16 */
     17 
     18 #include "SkXMLParser.h"
     19 
     20 static char const* const gErrorStrings[] = {
     21     "empty or missing file ",
     22     "unknown element ",
     23     "unknown attribute name ",
     24     "error in attribute value ",
     25     "duplicate ID ",
     26     "unknown error "
     27 };
     28 
     29 SkXMLParserError::SkXMLParserError() : fCode(kNoError), fLineNumber(-1),
     30     fNativeCode(-1)
     31 {
     32     reset();
     33 }
     34 
     35 SkXMLParserError::~SkXMLParserError()
     36 {
     37     // need a virtual destructor for our subclasses
     38 }
     39 
     40 void SkXMLParserError::getErrorString(SkString* str) const
     41 {
     42     SkASSERT(str);
     43     SkString temp;
     44     if (fCode != kNoError) {
     45         if ((unsigned)fCode < SK_ARRAY_COUNT(gErrorStrings))
     46             temp.set(gErrorStrings[fCode - 1]);
     47         temp.append(fNoun);
     48     } else
     49         SkXMLParser::GetNativeErrorString(fNativeCode, &temp);
     50     str->append(temp);
     51 }
     52 
     53 void SkXMLParserError::reset() {
     54     fCode = kNoError;
     55     fLineNumber = -1;
     56     fNativeCode = -1;
     57 }
     58 
     59 
     60 ////////////////
     61 
     62 SkXMLParser::SkXMLParser(SkXMLParserError* parserError) : fParser(NULL), fError(parserError)
     63 {
     64 }
     65 
     66 SkXMLParser::~SkXMLParser()
     67 {
     68 }
     69 
     70 bool SkXMLParser::startElement(const char elem[])
     71 {
     72     return this->onStartElement(elem);
     73 }
     74 
     75 bool SkXMLParser::addAttribute(const char name[], const char value[])
     76 {
     77     return this->onAddAttribute(name, value);
     78 }
     79 
     80 bool SkXMLParser::endElement(const char elem[])
     81 {
     82     return this->onEndElement(elem);
     83 }
     84 
     85 bool SkXMLParser::text(const char text[], int len)
     86 {
     87     return this->onText(text, len);
     88 }
     89 
     90 ////////////////////////////////////////////////////////////////////////////////
     91 
     92 bool SkXMLParser::onStartElement(const char elem[]) {return false; }
     93 bool SkXMLParser::onAddAttribute(const char name[], const char value[]) {return false; }
     94 bool SkXMLParser::onEndElement(const char elem[]) { return false; }
     95 bool SkXMLParser::onText(const char text[], int len) {return false; }
     96