diff options
author | Herb Derby <herb@google.com> | 2017-02-14 14:42:30 -0500 |
---|---|---|
committer | Skia Commit-Bot <skia-commit-bot@chromium.org> | 2017-02-14 20:17:05 +0000 |
commit | 5a8fe978c3d90a5aced700af42b9394d4264cdfc (patch) | |
tree | 23db8eb5d66015a9ff6c1416c0f010c7b1c91a33 /src/xml/SkDOM.h | |
parent | c42a1cdd1de7a3cf57a9a5fd7363f5fb660e97d0 (diff) |
Remove include/xml from public API.
Move SkDOM and ilk from include/xml to src/xml.
I have looked for uses of SkDOM in the depot using cs/ and have found none,
but this is not perfect. So, if this breaks external builds, revert it.
TBR=reed@google.com
Change-Id: I162a1977f0649b049c0f93f016701784d025996d
Reviewed-on: https://skia-review.googlesource.com/8447
Reviewed-by: Herb Derby <herb@google.com>
Reviewed-by: Mike Reed <reed@google.com>
Reviewed-by: Florin Malita <fmalita@chromium.org>
Commit-Queue: Herb Derby <herb@google.com>
Diffstat (limited to 'src/xml/SkDOM.h')
-rw-r--r-- | src/xml/SkDOM.h | 94 |
1 files changed, 94 insertions, 0 deletions
diff --git a/src/xml/SkDOM.h b/src/xml/SkDOM.h new file mode 100644 index 0000000000..0ffb04232a --- /dev/null +++ b/src/xml/SkDOM.h @@ -0,0 +1,94 @@ +/* + * Copyright 2006 The Android Open Source Project + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef SkDOM_DEFINED +#define SkDOM_DEFINED + +#include "../private/SkChunkAlloc.h" +#include "../private/SkTemplates.h" +#include "SkScalar.h" +#include "SkTypes.h" + +struct SkDOMNode; +struct SkDOMAttr; + +class SkDOMParser; +class SkStream; +class SkXMLParser; + +class SkDOM : public SkNoncopyable { +public: + SkDOM(); + ~SkDOM(); + + typedef SkDOMNode Node; + typedef SkDOMAttr Attr; + + /** Returns null on failure + */ + const Node* build(SkStream&); + const Node* copy(const SkDOM& dom, const Node* node); + + const Node* getRootNode() const; + + SkXMLParser* beginParsing(); + const Node* finishParsing(); + + enum Type { + kElement_Type, + kText_Type + }; + Type getType(const Node*) const; + + const char* getName(const Node*) const; + const Node* getFirstChild(const Node*, const char elem[] = NULL) const; + const Node* getNextSibling(const Node*, const char elem[] = NULL) const; + + const char* findAttr(const Node*, const char attrName[]) const; + const Attr* getFirstAttr(const Node*) const; + const Attr* getNextAttr(const Node*, const Attr*) const; + const char* getAttrName(const Node*, const Attr*) const; + const char* getAttrValue(const Node*, const Attr*) const; + + // helpers for walking children + int countChildren(const Node* node, const char elem[] = NULL) const; + + // helpers for calling SkParse + bool findS32(const Node*, const char name[], int32_t* value) const; + bool findScalars(const Node*, const char name[], SkScalar value[], int count) const; + bool findHex(const Node*, const char name[], uint32_t* value) const; + bool findBool(const Node*, const char name[], bool*) const; + int findList(const Node*, const char name[], const char list[]) const; + + bool findScalar(const Node* node, const char name[], SkScalar value[]) const { + return this->findScalars(node, name, value, 1); + } + + bool hasAttr(const Node*, const char name[], const char value[]) const; + bool hasS32(const Node*, const char name[], int32_t value) const; + bool hasScalar(const Node*, const char name[], SkScalar value) const; + bool hasHex(const Node*, const char name[], uint32_t value) const; + bool hasBool(const Node*, const char name[], bool value) const; + + class AttrIter { + public: + AttrIter(const SkDOM&, const Node*); + const char* next(const char** value); + private: + const Attr* fAttr; + const Attr* fStop; + }; + +private: + SkChunkAlloc fAlloc; + Node* fRoot; + std::unique_ptr<SkDOMParser> fParser; + + typedef SkNoncopyable INHERITED; +}; + +#endif |