diff options
Diffstat (limited to 'media/libdrm/mobile2/src/util/xml/XMLElementImpl.cpp')
-rw-r--r-- | media/libdrm/mobile2/src/util/xml/XMLElementImpl.cpp | 136 |
1 files changed, 136 insertions, 0 deletions
diff --git a/media/libdrm/mobile2/src/util/xml/XMLElementImpl.cpp b/media/libdrm/mobile2/src/util/xml/XMLElementImpl.cpp new file mode 100644 index 000000000000..5453902eba64 --- /dev/null +++ b/media/libdrm/mobile2/src/util/xml/XMLElementImpl.cpp @@ -0,0 +1,136 @@ +/* + * Copyright (C) 2007 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */
+#include <util/xml/XMLElementImpl.h> +#include <util/domcore/TextImpl.h> + +/** see XMLElementImpl.h */ +XMLElementImpl::XMLElementImpl(const DOMString *tag) +{ + if (tag) + { + mTagName = *tag; + } +} + +/** see XMLElementImpl.h */ +XMLElementImpl::~XMLElementImpl() +{ +} + +/** see XMLElementImpl.h */ +const DOMString* XMLElementImpl::getTagName() const +{ + return &mTagName; +} + +/** see XMLElementImpl.h */ +void XMLElementImpl::setAttribute(const DOMString* name, const DOMString* value) + throw (DOMException) +{ + if (name && value) + { + mAttributeMap[*name] = *value; + } +} + +/** see XMLElementImpl.h */ +void XMLElementImpl::removeAttribute(const DOMString* name) throw (DOMException) +{ + if (name) + { + mAttributeMap.erase(*name); + } +} + +/** see XMLElementImpl.h */ +const DOMString* XMLElementImpl::getAttribute(const DOMString* name) const +{ + if (name) + { + DOMStringMap::const_iterator pos = mAttributeMap.find(*name); + + if (pos != mAttributeMap.end()) + { + return &(pos->second); + } + + } + return NULL; +} + +/** see XMLElementImpl.h */ +bool XMLElementImpl::hasAttributes() const +{ + return !mAttributeMap.empty(); +} + +/** see XMLElementImpl.h */ +const DOMStringMap* XMLElementImpl::getAttributeMap() const +{ + return &mAttributeMap; +} + +/** see XMLElementImpl.h */ +const NodeImpl* XMLElementImpl::findSoloChildNode(const char* tag) const +{ + if (NULL == tag) + { + return NULL; + } + + string token; + NodeListImpl *nodeList = NULL; + const NodeImpl *childNode = NULL; + + token.assign(tag); + nodeList = getElementsByTagName(&token); + + if (nodeList->getLength() > 0) + { + childNode = nodeList->item(0); + } + + return childNode; +} + +/** see XMLElementImpl.h */ +const string* XMLElementImpl::getSoloText(const char* tag) const +{ + const NodeImpl *textNode = this->findSoloChildNode(tag); + + if (textNode) + { + textNode = textNode->getFirstChild(); + if (textNode) + { + return static_cast<const TextImpl*>(textNode)->getData(); + } + } + + return NULL; +} + +/** see XMLElementImpl.h */ +const XMLElementImpl* XMLElementImpl::getSoloElement(const char* tag) const +{ + const NodeImpl *node = findSoloChildNode(tag); + if (node) + { + return static_cast<const XMLElementImpl*>(node); + } + + return NULL; +} |