summaryrefslogtreecommitdiffstats
path: root/src/jabber_whiteboard/node-utilities.cpp
diff options
context:
space:
mode:
authorMenTaLguY <mental@rydia.net>2006-01-16 02:36:01 +0000
committermental <mental@users.sourceforge.net>2006-01-16 02:36:01 +0000
commit179fa413b047bede6e32109e2ce82437c5fb8d34 (patch)
treea5a6ac2c1708bd02288fbd8edb2ff500ff2e0916 /src/jabber_whiteboard/node-utilities.cpp
downloadinkscape-179fa413b047bede6e32109e2ce82437c5fb8d34.tar.gz
inkscape-179fa413b047bede6e32109e2ce82437c5fb8d34.zip
moving trunk for module inkscape
(bzr r1)
Diffstat (limited to 'src/jabber_whiteboard/node-utilities.cpp')
-rw-r--r--src/jabber_whiteboard/node-utilities.cpp119
1 files changed, 119 insertions, 0 deletions
diff --git a/src/jabber_whiteboard/node-utilities.cpp b/src/jabber_whiteboard/node-utilities.cpp
new file mode 100644
index 000000000..35b2772a1
--- /dev/null
+++ b/src/jabber_whiteboard/node-utilities.cpp
@@ -0,0 +1,119 @@
+/**
+ * Whiteboard session manager
+ * XML node manipulation / retrieval utilities
+ *
+ * Authors:
+ * David Yip <yipdw@rose-hulman.edu>
+ *
+ * Copyright (c) 2005 Authors
+ *
+ * Released under GNU GPL, read the file 'COPYING' for more information
+ */
+
+#include "util/shared-c-string-ptr.h"
+#include "util/list.h"
+
+#include "xml/node-observer.h"
+#include "xml/attribute-record.h"
+#include "xml/repr.h"
+
+#include "jabber_whiteboard/defines.h"
+#include "jabber_whiteboard/typedefs.h"
+#include "jabber_whiteboard/node-utilities.h"
+#include "jabber_whiteboard/node-tracker.h"
+//#include "jabber_whiteboard/node-observer.h"
+
+namespace Inkscape {
+
+namespace Whiteboard {
+
+/*
+Inkscape::XML::Node*
+NodeUtilities::lookupReprByValue(Inkscape::XML::Node* root, gchar const* key, Glib::ustring const* value)
+{
+ GQuark const quark = g_quark_from_string(key);
+ if (root == NULL) {
+ return NULL;
+ }
+
+ Inkscape::Util::List<Inkscape::XML::AttributeRecord const> attrlist = root->attributeList();
+ for( ; attrlist ; attrlist++) {
+ if ((attrlist->key == quark) && (strcmp(attrlist->value, value->data()) == 0)) {
+ return root;
+ }
+ }
+ Inkscape::XML::Node* result;
+ for ( Inkscape::XML::Node* child = root->firstChild() ; child != NULL ; child = child->next() ) {
+ result = NodeUtilities::lookupReprByValue(child, key, value);
+ if(result != NULL) {
+ return result;
+ }
+ }
+
+ return NULL;
+}
+*/
+
+Glib::ustring const
+NodeUtilities::nodeTypeToString(XML::Node const& node)
+{
+ switch(node.type()) {
+ case XML::DOCUMENT_NODE:
+ return NODETYPE_DOCUMENT_STR;
+ case XML::ELEMENT_NODE:
+ return NODETYPE_ELEMENT_STR;
+ case XML::TEXT_NODE:
+ return NODETYPE_TEXT_STR;
+ case XML::COMMENT_NODE:
+ default:
+ return NODETYPE_COMMENT_STR;
+ }
+}
+
+XML::NodeType
+NodeUtilities::stringToNodeType(Glib::ustring const& type)
+{
+ if (type == NODETYPE_DOCUMENT_STR) {
+ return XML::DOCUMENT_NODE;
+ } else if (type == NODETYPE_ELEMENT_STR) {
+ return XML::ELEMENT_NODE;
+ } else if (type == NODETYPE_TEXT_STR) {
+ return XML::TEXT_NODE;
+ } else {
+ return XML::COMMENT_NODE;
+ }
+}
+
+std::string const
+NodeUtilities::findNodeID(XML::Node const& node, XMLNodeTracker* tracker, NodeToKeyMap const& newnodes)
+{
+// g_log(NULL, G_LOG_LEVEL_DEBUG, "Attempting to locate id for %p", &node);
+ NodeToKeyMap::const_iterator result = newnodes.find(&node);
+ if (result != newnodes.end()) {
+// g_log(NULL, G_LOG_LEVEL_DEBUG, "Located id for %p: %s", &node, (*result).second.c_str());
+ return (*result).second;
+ }
+
+ if (tracker->isTracking(node)) {
+// g_log(NULL, G_LOG_LEVEL_DEBUG, "Located id for %p (in tracker): %s", &node, tracker->get(node).c_str());
+ return tracker->get(node);
+ } else {
+// g_log(NULL, G_LOG_LEVEL_DEBUG, "Failed to locate id");
+ return "";
+ }
+}
+
+}
+
+}
+
+/*
+ Local Variables:
+ mode:c++
+ c-file-style:"stroustrup"
+ c-file-offsets:((innamespace . 0)(inline-open . 0)(case-label . +))
+ indent-tabs-mode:nil
+ fill-column:99
+ End:
+*/
+// vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:encoding=utf-8:textwidth=99 :