Lines Matching full:node
24 bool SkXMLParser::parse(const SkDOM& dom, const SkDOMNode* node)
26 const char* elemName = dom.getName(node);
31 SkDOM::AttrIter iter(dom, node);
38 if ((node = dom.getFirstChild(node)) != NULL)
40 if (!this->parse(dom, node))
42 } while ((node = dom.getNextSibling(node)) != NULL);
84 const SkDOM::Node* SkDOM::getRootNode() const
89 const SkDOM::Node* SkDOM::getFirstChild(const Node* node, const char name[]) const
91 SkASSERT(node);
92 const Node* child = node->fFirstChild;
103 const SkDOM::Node* SkDOM::getNextSibling(const Node* node, const char name[]) const
105 SkASSERT(node);
106 const Node* sibling = node->fNextSibling;
116 SkDOM::Type SkDOM::getType(const Node* node) const
118 SkASSERT(node);
119 return (Type)node->fType;
122 const char* SkDOM::getName(const Node* node) const
124 SkASSERT(node);
125 return node->fName;
128 const char* SkDOM::findAttr(const Node* node, const char name[]) const
130 SkASSERT(node);
131 const Attr* attr = node->attrs();
132 const Attr* stop = attr + node->fAttrCount;
145 const SkDOM::Attr* SkDOM::getFirstAttr(const Node* node) const
147 return node->fAttrCount ? node->attrs() : NULL;
150 const SkDOM::Attr* SkDOM::getNextAttr(const Node* node, const Attr* attr) const
152 SkASSERT(node);
155 return (attr - node->attrs() + 1) < node->fAttrCount ? attr + 1 : NULL;
158 const char* SkDOM::getAttrName(const Node* node, const Attr* attr) const
160 SkASSERT(node);
165 const char* SkDOM::getAttrValue(const Node* node, const Attr* attr) const
167 SkASSERT(node);
174 SkDOM::AttrIter::AttrIter(const SkDOM&, const SkDOM::Node* node)
176 SkASSERT(node);
177 fAttr = node->attrs();
178 fStop = fAttr + node->fAttrCount;
218 SkDOM::Node* getRoot() const { return fRoot; }
225 SkDOM::Node* node = (SkDOM::Node*)fAlloc->alloc(sizeof(SkDOM::Node) + attrCount * sizeof(SkDOM::Attr),
228 node->fName = fElemName;
229 node->fFirstChild = NULL;
230 node->fAttrCount = SkToU16(attrCount);
231 node->fType = SkDOM::kElement_Type;
235 node->fNextSibling = NULL;
236 fRoot = node;
240 SkDOM::Node* parent = fParentStack.top();
242 node->fNextSibling = parent->fFirstChild;
243 parent->fFirstChild = node;
245 *fParentStack.push() = node;
247 memcpy(node->attrs(), fAttrs.begin(), attrCount * sizeof(SkDOM::Attr));
274 SkDOM::Node* parent;
278 SkDOM::Node* child = parent->fFirstChild;
279 SkDOM::Node* prev = NULL;
282 SkDOM::Node* next = child->fNextSibling;
291 SkTDArray<SkDOM::Node*> fParentStack;
293 SkDOM::Node* fRoot;
301 const SkDOM::Node* SkDOM::build(const char doc[], size_t len)
318 static void walk_dom(const SkDOM& dom, const SkDOM::Node* node, SkXMLParser* parser)
320 const char* elem = dom.getName(node);
324 SkDOM::AttrIter iter(dom, node);
330 node = dom.getFirstChild(node, NULL);
331 while (node)
333 walk_dom(dom, node, parser);
334 node = dom.getNextSibling(node, NULL);
340 const SkDOM::Node* SkDOM::copy(const SkDOM& dom, const SkDOM::Node* node)
345 walk_dom(dom, node, &parser);
353 int SkDOM::countChildren(const Node* node, const char elem[]) const
357 node = this->getFirstChild(node, elem);
358 while (node)
361 node = this->getNextSibling(node, elem);
370 bool SkDOM::findS32(const Node* node, const char name[], int32_t* value) const
372 const char* vstr = this->findAttr(node, name);
376 bool SkDOM::findScalars(const Node* node, const char name[], SkScalar value[], int count) const
378 const char* vstr = this->findAttr(node, name);
382 bool SkDOM::findHex(const Node* node, const char name[], uint32_t* value) const
384 const char* vstr = this->findAttr(node, name);
388 bool SkDOM::findBool(const Node* node, const char name[], bool* value) const
390 const char* vstr = this->findAttr(node, name);
394 int SkDOM::findList(const Node* node, const char name[], const char list[]) const
396 const char* vstr = this->findAttr(node, name);
400 bool SkDOM::hasAttr(const Node* node, const char name[], const char value[]) const
402 const char* vstr = this->findAttr(node, name);
406 bool SkDOM::hasS32(const Node* node, const char name[], int32_t target) const
408 const char* vstr = this->findAttr(node, name);
413 bool SkDOM::hasScalar(const Node* node, const char name[], SkScalar target) const
415 const char* vstr = this->findAttr(node, name);
420 bool SkDOM::hasHex(const Node* node, const char name[], uint32_t target) const
422 const char* vstr = this->findAttr(node, name);
427 bool SkDOM::hasBool(const Node* node, const char name[], bool target) const
429 const char* vstr = this->findAttr(node, name);
444 void SkDOM::dump(const Node* node, int level) const
446 if (node == NULL)
447 node = this->getRootNode();
448 if (node)
451 SkDebugf("<%s", this->getName(node));
453 const Attr* attr = node->attrs();
454 const Attr* stop = attr + node->fAttrCount;
458 const Node* child = this->getFirstChild(node);
468 SkDebugf("</%s>\n", node->fName);
494 const Node* root = dom.build(gDoc, sizeof(gDoc) - 1);