1
2/*
3 * Copyright 2006 The Android Open Source Project
4 *
5 * Use of this source code is governed by a BSD-style license that can be
6 * found in the LICENSE file.
7 */
8
9
10#ifndef SkBML_WXMLParser_DEFINED
11#define SkBML_WXMLParser_DEFINED
12
13#include "SkString.h"
14#include "SkXMLParser.h"
15
16class SkStream;
17class SkWStream;
18
19class BML_WXMLParser : public SkXMLParser {
20public:
21    BML_WXMLParser(SkWStream& writer);
22    virtual ~BML_WXMLParser();
23    static void Write(SkStream& s, const char filename[]);
24
25  /** @cond UNIT_TEST */
26  SkDEBUGCODE(static void UnitTest();)
27  /** @endcond */
28private:
29    virtual bool onAddAttribute(const char name[], const char value[]);
30    virtual bool onEndElement(const char name[]);
31    virtual bool onStartElement(const char name[]);
32    BML_WXMLParser& operator=(const BML_WXMLParser& src);
33#ifdef SK_DEBUG
34    int fElemsCount, fElemsReused;
35    int fAttrsCount, fNamesReused, fValuesReused;
36#endif
37    SkWStream&  fWriter;
38    char*       fElems[256];
39    char*       fAttrNames[256];
40    char*       fAttrValues[256];
41
42    // important that these are U8, so we get automatic wrap-around
43    U8  fNextElem, fNextAttrName, fNextAttrValue;
44};
45
46#endif // SkBML_WXMLParser_DEFINED
47