summaryrefslogtreecommitdiff
path: root/src/domhelpers.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/domhelpers.h')
-rw-r--r--src/domhelpers.h165
1 files changed, 0 insertions, 165 deletions
diff --git a/src/domhelpers.h b/src/domhelpers.h
deleted file mode 100644
index 8b14e2b..0000000
--- a/src/domhelpers.h
+++ /dev/null
@@ -1,165 +0,0 @@
-/*
- * Copyright (c) 2004, Nate Nielsen
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * * Redistributions of source code must retain the above
- * copyright notice, this list of conditions and the
- * following disclaimer.
- * * Redistributions in binary form must reproduce the
- * above copyright notice, this list of conditions and
- * the following disclaimer in the documentation and/or
- * other materials provided with the distribution.
- * * The names of contributors to this software may not be
- * used to endorse or promote products derived from this
- * software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
- * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
- * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
- * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
- * THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
- * DAMAGE.
- *
- *
- * CONTRIBUTORS
- * Nate Nielsen <nielsen@memberwebs.com>
- *
- */
-
-#ifndef __DOMHELPERS_H__
-#define __DOMHELPERS_H__
-
-#include "sablo.h"
-#include <map>
-#include <stack>
-#include <set>
-
-/*
- * DOMHelpers
- *
- * A collection of functions for doing some things with an XML DOM.
- * Used mainly by XMLComposer.
- */
-class DOMHelpers
-{
-public:
-
- // Check if given node is an element with a certain name
- static bool isElement(const DOM::Node& node, const string& name);
-
- // Check if two elements have the same name and attributes
- static bool isEqualElement(const DOM::Element& el1, const DOM::Element& el2);
-
- // Copy attributes from one element to another optionaly ignoring some
- static void copyAttributes(const DOM::Element& src, DOM::Element& dest, const char** hideList);
-
- // Insert a child node after a given reference node
- static void insertAfter(DOM::Node& parent, const DOM::Node& node, const DOM::Node& ref);
-
- // Get containing element of a given name
- static DOM::Element getContainingElement(const DOM::Node& node, const string& name);
-
- // Get previous element (in XML flow) of a given name
- static DOM::Element getPriorElement(const DOM::Node& node, const string& name);
-
- // Get first child element of a given name
- static DOM::Element findChildElement(const DOM::Node& parent, const string& name);
-
- // Check if a given element is anothers ancestor
- static bool hasAncestor(const DOM::Node& ancestor, const DOM::Node& node);
-};
-
-/*
- * ElementTable
- *
- * A table of elements matched to their ids for quick access while applying
- * things like fonts, styles, lists from their definitions.
- */
-class ElementTable :
- public std::map<wstring, DOM::Element>
-{
-public:
- void load(const DOM::Node& parent, const string& name);
-
- DOM::Element get(const wstring& id) const;
-
- bool has(const wstring& id) const
- { return find(id) != end(); }
-
- void removeIds();
-};
-
-// Some other handy types
-typedef std::set<string> StringSet;
-typedef std::stack<DOM::Node> NodeStack;
-
-/*
- * ElementIterator
- *
- * For iterating through the elements in a document.
- */
-class ElementIterator
- : public std::iterator<std::input_iterator_tag, DOM::Element, ptrdiff_t>
-{
-public:
- ElementIterator()
- { m_flags = AFTER_LAST; }
- ElementIterator(const DOM::Element& top)
- { m_top = top; m_flags = BEFORE_FIRST; next(); }
- ElementIterator(const ElementIterator& x)
- { m_top = x.m_top; m_current = x.m_current; m_flags = x.m_flags; }
-
- const DOM::Element& operator*() const
- { return m_current; }
- const DOM::Element* operator->() const
- { return (&**this); }
- const ElementIterator& operator++()
- { next(); return (*this); }
- const ElementIterator& operator--()
- { prev(); return (*this); }
-
- // Friend comparision functions
- friend bool operator==(const ElementIterator& x, const ElementIterator& y);
- friend bool operator!=(const ElementIterator& x, const ElementIterator& y);
-
-// Implementation
-protected:
-
- void next();
- DOM::Element nextel(DOM::Node node);
-
- void prev();
- DOM::Element prevel(DOM::Node node);
-
-// Data
-protected:
-
- enum
- {
- ITERATING,
- BEFORE_FIRST,
- AFTER_LAST
- };
-
- DOM::Element m_top;
- DOM::Element m_current;
- int m_flags;
-};
-
-// friend functions
-inline bool operator==(const ElementIterator& x, const ElementIterator& y)
- { return y.m_current == x.m_current && y.m_flags == x.m_flags; }
-inline bool operator!=(const ElementIterator& x, const ElementIterator& y)
- { return (!(x == y)); }
-
-#endif // __DOMHELPERS_H__