aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/xml/SkDOM.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/xml/SkDOM.cpp')
-rw-r--r--src/xml/SkDOM.cpp185
1 files changed, 67 insertions, 118 deletions
diff --git a/src/xml/SkDOM.cpp b/src/xml/SkDOM.cpp
index 38ba669bb7..b1cf1d5360 100644
--- a/src/xml/SkDOM.cpp
+++ b/src/xml/SkDOM.cpp
@@ -8,31 +8,32 @@
#include "SkDOM.h"
#include "SkStream.h"
+#include "SkXMLParser.h"
#include "SkXMLWriter.h"
-/////////////////////////////////////////////////////////////////////////
-
-#include "SkXMLParser.h"
-bool SkXMLParser::parse(const SkDOM& dom, const SkDOMNode* node)
-{
+bool SkXMLParser::parse(const SkDOM& dom, const SkDOMNode* node) {
const char* elemName = dom.getName(node);
- if (this->startElement(elemName))
+ if (this->startElement(elemName)) {
return false;
+ }
SkDOM::AttrIter iter(dom, node);
const char* name, *value;
- while ((name = iter.next(&value)) != nullptr)
- if (this->addAttribute(name, value))
+ while ((name = iter.next(&value)) != nullptr) {
+ if (this->addAttribute(name, value)) {
return false;
+ }
+ }
- if ((node = dom.getFirstChild(node)) != nullptr)
+ if ((node = dom.getFirstChild(node)) != nullptr) {
do {
- if (!this->parse(dom, node))
+ if (!this->parse(dom, node)) {
return false;
+ }
} while ((node = dom.getNextSibling(node)) != nullptr);
-
+ }
return !this->endElement(elemName);
}
@@ -51,12 +52,11 @@ struct SkDOMNode {
uint8_t fType;
uint8_t fPad;
- const SkDOMAttr* attrs() const
- {
+ const SkDOMAttr* attrs() const {
return (const SkDOMAttr*)(this + 1);
}
- SkDOMAttr* attrs()
- {
+
+ SkDOMAttr* attrs() {
return (SkDOMAttr*)(this + 1);
}
};
@@ -65,68 +65,60 @@ struct SkDOMNode {
#define kMinChunkSize 512
-SkDOM::SkDOM() : fAlloc(kMinChunkSize), fRoot(nullptr)
-{
-}
+SkDOM::SkDOM() : fAlloc(kMinChunkSize), fRoot(nullptr) {}
-SkDOM::~SkDOM()
-{
-}
+SkDOM::~SkDOM() {}
-const SkDOM::Node* SkDOM::getRootNode() const
-{
+const SkDOM::Node* SkDOM::getRootNode() const {
return fRoot;
}
-const SkDOM::Node* SkDOM::getFirstChild(const Node* node, const char name[]) const
-{
+const SkDOM::Node* SkDOM::getFirstChild(const Node* node, const char name[]) const {
SkASSERT(node);
const Node* child = node->fFirstChild;
- if (name)
- {
- for (; child != nullptr; child = child->fNextSibling)
- if (!strcmp(name, child->fName))
+ if (name) {
+ for (; child != nullptr; child = child->fNextSibling) {
+ if (!strcmp(name, child->fName)) {
break;
+ }
+ }
}
return child;
}
-const SkDOM::Node* SkDOM::getNextSibling(const Node* node, const char name[]) const
-{
+const SkDOM::Node* SkDOM::getNextSibling(const Node* node, const char name[]) const {
SkASSERT(node);
const Node* sibling = node->fNextSibling;
- if (name)
- {
- for (; sibling != nullptr; sibling = sibling->fNextSibling)
- if (!strcmp(name, sibling->fName))
+ if (name) {
+ for (; sibling != nullptr; sibling = sibling->fNextSibling) {
+ if (!strcmp(name, sibling->fName)) {
break;
+ }
+ }
}
return sibling;
}
-SkDOM::Type SkDOM::getType(const Node* node) const
-{
+SkDOM::Type SkDOM::getType(const Node* node) const {
SkASSERT(node);
return (Type)node->fType;
}
-const char* SkDOM::getName(const Node* node) const
-{
+const char* SkDOM::getName(const Node* node) const {
SkASSERT(node);
return node->fName;
}
-const char* SkDOM::findAttr(const Node* node, const char name[]) const
-{
+const char* SkDOM::findAttr(const Node* node, const char name[]) const {
SkASSERT(node);
const Attr* attr = node->attrs();
const Attr* stop = attr + node->fAttrCount;
- while (attr < stop)
- {
- if (!strcmp(attr->fName, name))
+ while (attr < stop) {
+ if (!strcmp(attr->fName, name)) {
return attr->fValue;
+ }
attr += 1;
}
return nullptr;
@@ -134,28 +126,25 @@ const char* SkDOM::findAttr(const Node* node, const char name[]) const
/////////////////////////////////////////////////////////////////////////////////////
-const SkDOM::Attr* SkDOM::getFirstAttr(const Node* node) const
-{
+const SkDOM::Attr* SkDOM::getFirstAttr(const Node* node) const {
return node->fAttrCount ? node->attrs() : nullptr;
}
-const SkDOM::Attr* SkDOM::getNextAttr(const Node* node, const Attr* attr) const
-{
+const SkDOM::Attr* SkDOM::getNextAttr(const Node* node, const Attr* attr) const {
SkASSERT(node);
- if (attr == nullptr)
+ if (attr == nullptr) {
return nullptr;
+ }
return (attr - node->attrs() + 1) < node->fAttrCount ? attr + 1 : nullptr;
}
-const char* SkDOM::getAttrName(const Node* node, const Attr* attr) const
-{
+const char* SkDOM::getAttrName(const Node* node, const Attr* attr) const {
SkASSERT(node);
SkASSERT(attr);
return attr->fName;
}
-const char* SkDOM::getAttrValue(const Node* node, const Attr* attr) const
-{
+const char* SkDOM::getAttrValue(const Node* node, const Attr* attr) const {
SkASSERT(node);
SkASSERT(attr);
return attr->fValue;
@@ -163,19 +152,16 @@ const char* SkDOM::getAttrValue(const Node* node, const Attr* attr) const
/////////////////////////////////////////////////////////////////////////////////////
-SkDOM::AttrIter::AttrIter(const SkDOM&, const SkDOM::Node* node)
-{
+SkDOM::AttrIter::AttrIter(const SkDOM&, const SkDOM::Node* node) {
SkASSERT(node);
fAttr = node->attrs();
fStop = fAttr + node->fAttrCount;
}
-const char* SkDOM::AttrIter::next(const char** value)
-{
+const char* SkDOM::AttrIter::next(const char** value) {
const char* name = nullptr;
- if (fAttr < fStop)
- {
+ if (fAttr < fStop) {
name = fAttr->fName;
if (value)
*value = fAttr->fValue;
@@ -189,8 +175,7 @@ const char* SkDOM::AttrIter::next(const char** value)
#include "SkXMLParser.h"
#include "SkTDArray.h"
-static char* dupstr(SkChunkAlloc* chunk, const char src[])
-{
+static char* dupstr(SkChunkAlloc* chunk, const char src[]) {
SkASSERT(chunk && src);
size_t len = strlen(src);
char* dst = (char*)chunk->alloc(len + 1, SkChunkAlloc::kThrow_AllocFailType);
@@ -200,8 +185,7 @@ static char* dupstr(SkChunkAlloc* chunk, const char src[])
class SkDOMParser : public SkXMLParser {
public:
- SkDOMParser(SkChunkAlloc* chunk) : SkXMLParser(&fParserError), fAlloc(chunk)
- {
+ SkDOMParser(SkChunkAlloc* chunk) : SkXMLParser(&fParserError), fAlloc(chunk) {
fAlloc->reset();
fRoot = nullptr;
fLevel = 0;
@@ -211,8 +195,7 @@ public:
SkXMLParserError fParserError;
protected:
- void flushAttributes()
- {
+ void flushAttributes() {
SkASSERT(fLevel > 0);
int attrCount = fAttrs.count();
@@ -225,13 +208,10 @@ protected:
node->fAttrCount = SkToU16(attrCount);
node->fType = fElemType;
- if (fRoot == nullptr)
- {
+ if (fRoot == nullptr) {
node->fNextSibling = nullptr;
fRoot = node;
- }
- else // this adds siblings in reverse order. gets corrected in onEndElement()
- {
+ } else { // this adds siblings in reverse order. gets corrected in onEndElement()
SkDOM::Node* parent = fParentStack.top();
SkASSERT(fRoot && parent);
node->fNextSibling = parent->fFirstChild;
@@ -268,8 +248,7 @@ protected:
SkDOM::Node* child = parent->fFirstChild;
SkDOM::Node* prev = nullptr;
- while (child)
- {
+ while (child) {
SkDOM::Node* next = child->fNextSibling;
child->fNextSibling = prev;
prev = child;
@@ -289,9 +268,9 @@ protected:
private:
void startCommon(const char elem[], SkDOM::Type type) {
- if (fLevel > 0 && fNeedToFlush)
+ if (fLevel > 0 && fNeedToFlush) {
this->flushAttributes();
-
+ }
fNeedToFlush = true;
fElemName = dupstr(fAlloc, elem);
fElemType = type;
@@ -325,8 +304,7 @@ const SkDOM::Node* SkDOM::build(SkStream& docStream) {
///////////////////////////////////////////////////////////////////////////
-static void walk_dom(const SkDOM& dom, const SkDOM::Node* node, SkXMLParser* parser)
-{
+static void walk_dom(const SkDOM& dom, const SkDOM::Node* node, SkXMLParser* parser) {
const char* elem = dom.getName(node);
if (dom.getType(node) == SkDOM::kText_Type) {
SkASSERT(dom.countChildren(node) == 0);
@@ -352,8 +330,7 @@ static void walk_dom(const SkDOM& dom, const SkDOM::Node* node, SkXMLParser* par
parser->endElement(elem);
}
-const SkDOM::Node* SkDOM::copy(const SkDOM& dom, const SkDOM::Node* node)
-{
+const SkDOM::Node* SkDOM::copy(const SkDOM& dom, const SkDOM::Node* node) {
SkDOMParser parser(&fAlloc);
walk_dom(dom, node, &parser);
@@ -379,13 +356,11 @@ const SkDOM::Node* SkDOM::finishParsing() {
//////////////////////////////////////////////////////////////////////////
-int SkDOM::countChildren(const Node* node, const char elem[]) const
-{
+int SkDOM::countChildren(const Node* node, const char elem[]) const {
int count = 0;
node = this->getFirstChild(node, elem);
- while (node)
- {
+ while (node) {
count += 1;
node = this->getNextSibling(node, elem);
}
@@ -396,82 +371,56 @@ int SkDOM::countChildren(const Node* node, const char elem[]) const
#include "SkParse.h"
-bool SkDOM::findS32(const Node* node, const char name[], int32_t* value) const
-{
+bool SkDOM::findS32(const Node* node, const char name[], int32_t* value) const {
const char* vstr = this->findAttr(node, name);
return vstr && SkParse::FindS32(vstr, value);
}
-bool SkDOM::findScalars(const Node* node, const char name[], SkScalar value[], int count) const
-{
+bool SkDOM::findScalars(const Node* node, const char name[], SkScalar value[], int count) const {
const char* vstr = this->findAttr(node, name);
return vstr && SkParse::FindScalars(vstr, value, count);
}
-bool SkDOM::findHex(const Node* node, const char name[], uint32_t* value) const
-{
+bool SkDOM::findHex(const Node* node, const char name[], uint32_t* value) const {
const char* vstr = this->findAttr(node, name);
return vstr && SkParse::FindHex(vstr, value);
}
-bool SkDOM::findBool(const Node* node, const char name[], bool* value) const
-{
+bool SkDOM::findBool(const Node* node, const char name[], bool* value) const {
const char* vstr = this->findAttr(node, name);
return vstr && SkParse::FindBool(vstr, value);
}
-int SkDOM::findList(const Node* node, const char name[], const char list[]) const
-{
+int SkDOM::findList(const Node* node, const char name[], const char list[]) const {
const char* vstr = this->findAttr(node, name);
return vstr ? SkParse::FindList(vstr, list) : -1;
}
-bool SkDOM::hasAttr(const Node* node, const char name[], const char value[]) const
-{
+bool SkDOM::hasAttr(const Node* node, const char name[], const char value[]) const {
const char* vstr = this->findAttr(node, name);
return vstr && !strcmp(vstr, value);
}
-bool SkDOM::hasS32(const Node* node, const char name[], int32_t target) const
-{
+bool SkDOM::hasS32(const Node* node, const char name[], int32_t target) const {
const char* vstr = this->findAttr(node, name);
int32_t value;
return vstr && SkParse::FindS32(vstr, &value) && value == target;
}
-bool SkDOM::hasScalar(const Node* node, const char name[], SkScalar target) const
-{
+bool SkDOM::hasScalar(const Node* node, const char name[], SkScalar target) const {
const char* vstr = this->findAttr(node, name);
SkScalar value;
return vstr && SkParse::FindScalar(vstr, &value) && value == target;
}
-bool SkDOM::hasHex(const Node* node, const char name[], uint32_t target) const
-{
+bool SkDOM::hasHex(const Node* node, const char name[], uint32_t target) const {
const char* vstr = this->findAttr(node, name);
uint32_t value;
return vstr && SkParse::FindHex(vstr, &value) && value == target;
}
-bool SkDOM::hasBool(const Node* node, const char name[], bool target) const
-{
+bool SkDOM::hasBool(const Node* node, const char name[], bool target) const {
const char* vstr = this->findAttr(node, name);
bool value;
return vstr && SkParse::FindBool(vstr, &value) && value == target;
}
-
-//////////////////////////////////////////////////////////////////////////
-
-#ifdef SK_DEBUG
-
-void SkDOM::dump(const Node* node, int level) const
-{
- if (node == nullptr)
- node = this->getRootNode();
-
- SkDebugWStream debugStream;
- SkXMLStreamWriter xmlWriter(&debugStream);
- xmlWriter.writeDOM(*this, node, false);
-}
-
-#endif