[Frugalware-git] frugalware-current: libxml++-2.22.0-2-i686

Priyank priyank at frugalware.org
Tue Jun 24 15:43:53 CEST 2008


Git-Url: http://git.frugalware.org/gitweb/gitweb.cgi?p=frugalware-current.git;a=commitdiff;h=85b56a0168f0a7dfd3bc8cf3807f0251b877ad5b

commit 85b56a0168f0a7dfd3bc8cf3807f0251b877ad5b
Author: Priyank <priyank at frugalware.org>
Date:   Tue Jun 24 19:10:30 2008 +0530

libxml++-2.22.0-2-i686
* Added a patch from libxml++ svn to add a few required fixes
* and additions required for bakery-2.5

diff --git a/source/lib-extra/libxml++/FrugalBuild b/source/lib-extra/libxml++/FrugalBuild
index 5b3d610..1ca976a 100644
--- a/source/lib-extra/libxml++/FrugalBuild
+++ b/source/lib-extra/libxml++/FrugalBuild
@@ -1,17 +1,19 @@
-# Compiling Time: 0.40 SBU
+# Compiling Time: 0.19 SBU
# Contributor: Tuxbubling <tuxbubling at tiscali.fr>
# Maintainer: voroskoi <voroskoi at frugalware.org>

pkgname=libxml++
pkgver=2.22.0
-pkgrel=1
+pkgrel=2
pkgdesc="libxml++ is a C++ wrapper for the libxml XML parser library"
url="http://libxmlplusplus.sourceforge.net/"
groups=('lib-extra')
archs=('i686' 'x86_64')
depends=('libxml2' 'glibmm' 'glib2')
Finclude gnome
-sha1sums=('8c69339e1b472bd5e541e30fdaa47b152bc186bc')
+source=(${source[@]} ${pkgname}_nodes.patch)
+sha1sums=('8c69339e1b472bd5e541e30fdaa47b152bc186bc' \
+          '680075d2b754b28cfb2a9ea8d888045e2bc9ae0b')

build() {
Fbuild
diff --git a/source/lib-extra/libxml++/libxml++_nodes.patch b/source/lib-extra/libxml++/libxml++_nodes.patch
new file mode 100644
index 0000000..85fdeb6
--- /dev/null
+++ b/source/lib-extra/libxml++/libxml++_nodes.patch
@@ -0,0 +1,288 @@
+diff -Naur libxml++-2.22.0/libxml++/nodes/element.cc libxml++-2.23.1/libxml++/nodes/element.cc
+--- libxml++-2.22.0/libxml++/nodes/element.cc	2008-01-17 14:56:54.000000000 +0530
++++ libxml++-2.23.1/libxml++/nodes/element.cc	2008-06-24 18:59:04.000000000 +0530
+@@ -156,6 +156,40 @@
+   return 0;
+ }
+
++TextNode* Element::add_child_text(xmlpp::Node* previous_sibling, const Glib::ustring& content)
++{
++  if(!previous_sibling)
++    return 0;
++
++  if(cobj()->type == XML_ELEMENT_NODE)
++  {
++     xmlNode* node = xmlNewText((const xmlChar*)content.c_str());
++
++     // Use the result, because node can be freed when merging text nodes:
++     node = xmlAddNextSibling(previous_sibling->cobj(), node);
++
++     return static_cast<TextNode*>(node->_private);
++  }
++  return 0;
++}
++
++TextNode* Element::add_child_text_before(xmlpp::Node* next_sibling, const Glib::ustring& content)
++{
++  if(!next_sibling)
++    return 0;
++
++  if(cobj()->type == XML_ELEMENT_NODE)
++  {
++     xmlNode* node = xmlNewText((const xmlChar*)content.c_str());
++
++     // Use the result, because node can be freed when merging text nodes:
++     node = xmlAddPrevSibling(next_sibling->cobj(), node);
++
++     return static_cast<TextNode*>(node->_private);
++  }
++  return 0;
++}
++
+ bool Element::has_child_text() const
+ {
+   return get_child_text() != 0;
+diff -Naur libxml++-2.22.0/libxml++/nodes/element.h libxml++-2.23.1/libxml++/nodes/element.h
+--- libxml++-2.22.0/libxml++/nodes/element.h	2008-01-17 14:56:54.000000000 +0530
++++ libxml++-2.23.1/libxml++/nodes/element.h	2008-06-24 18:59:04.000000000 +0530
+@@ -94,6 +94,26 @@
+    */
+   TextNode* add_child_text(const Glib::ustring& content = Glib::ustring());
+
++  /** Add a new text node after the specified existing child node.
++   *
++   * @newin2p24
++   *
++   * @param previous_sibling An existing child node.
++   * @param content The text. This should be unescaped - see ContentNode::set_content().
++   * @returns The new text node.
++   */
++  TextNode* add_child_text(xmlpp::Node* previous_sibling, const Glib::ustring& content = Glib::ustring());
++
++  /** Add a new text node before the specified existing child node.
++   *
++   * @newin2p24
++   *
++   * @param next_sibling An existing child node.
++   * @param content The text. This should be unescaped - see ContentNode::set_content().
++   * @returns The new text node.
++   */
++  TextNode* add_child_text_before(xmlpp::Node* next_sibling, const Glib::ustring& content = Glib::ustring());
++
+   /** Set the text of the first text node, adding one if necessary.
+    * This is a convenience method, meant as an alternative to iterating over all the child nodes to find the first suitable node then and setting the text directly.
+    * @param content The text. This should be unescaped - see ContentNode::set_content().
+diff -Naur libxml++-2.22.0/libxml++/nodes/node.cc libxml++-2.23.1/libxml++/nodes/node.cc
+--- libxml++-2.22.0/libxml++/nodes/node.cc	2008-01-17 14:56:54.000000000 +0530
++++ libxml++-2.23.1/libxml++/nodes/node.cc	2008-06-24 18:59:04.000000000 +0530
+@@ -97,7 +97,55 @@
+ Element* Node::add_child(const Glib::ustring& name,
+                          const Glib::ustring& ns_prefix)
+ {
+-   xmlNode* node = 0;
++  _xmlNode* child = create_new_child_node(name, ns_prefix);
++  if(!child)
++    return 0;
++
++  _xmlNode* node = xmlAddChild(impl_, child);
++  if(node)
++    return static_cast<Element*>(node->_private);
++  else
++     return 0;
++}
++
++Element* Node::add_child(xmlpp::Node* previous_sibling,
++                         const Glib::ustring& name,
++                         const Glib::ustring& ns_prefix)
++{
++  if(!previous_sibling)
++    return 0;
++
++  _xmlNode* child = create_new_child_node(name, ns_prefix);
++  if(!child)
++    return 0;
++
++  _xmlNode* node = xmlAddNextSibling(previous_sibling->cobj(), child);
++  if(node)
++    return static_cast<Element*>(node->_private);
++  else
++     return 0;
++}
++
++Element* Node::add_child_before(xmlpp::Node* next_sibling,
++                         const Glib::ustring& name,
++                         const Glib::ustring& ns_prefix)
++{
++  if(!next_sibling)
++    return 0;
++
++  _xmlNode* child = create_new_child_node(name, ns_prefix);
++  if(!child)
++    return 0;
++
++  _xmlNode* node = xmlAddPrevSibling(next_sibling->cobj(), child);
++  if(node)
++    return static_cast<Element*>(node->_private);
++  else
++     return 0;
++}
++
++_xmlNode* Node::create_new_child_node(const Glib::ustring& name, const Glib::ustring& ns_prefix)
++{
+    xmlNs* ns = 0;
+
+    if(impl_->type != XML_ELEMENT_NODE)
+@@ -124,14 +172,10 @@
+      }
+    }
+
+-   node = xmlAddChild(impl_, xmlNewNode(ns, (const xmlChar*)name.c_str()));
+-
+-   if(node)
+-     return static_cast<Element*>(node->_private);
+-   else
+-     return 0;
++   return xmlNewNode(ns, (const xmlChar*)name.c_str());
+ }
+
++
+ void Node::remove_child(Node* node)
+ {
+   //TODO: Allow a node to be removed without deleting it, to allow it to be moved?
+diff -Naur libxml++-2.22.0/libxml++/nodes/node.h libxml++-2.23.1/libxml++/nodes/node.h
+--- libxml++-2.22.0/libxml++/nodes/node.h	2007-08-13 18:17:18.000000000 +0530
++++ libxml++-2.23.1/libxml++/nodes/node.h	2008-06-24 18:59:04.000000000 +0530
+@@ -20,7 +20,8 @@
+ }
+ #endif //DOXYGEN_SHOULD_SKIP_THIS
+
+-namespace xmlpp {
++namespace xmlpp
++{
+
+ class TextNode;
+ class Element;
+@@ -50,7 +51,7 @@
+    */
+   void set_name(const Glib::ustring& name);
+
+-  /** Set the namespace prefix used by the node
++  /** Set the namespace prefix used by the node.
+    * If no such namespace prefix has been declared then this method will throw an exception.
+    * @param ns_prefix The namespace prefix.
+    */
+@@ -64,32 +65,32 @@
+    */
+   int get_line() const;
+
+-  /** Get the parent element for this node
++  /** Get the parent element for this node.
+    * @returns The parent node
+    */
+   const Element* get_parent() const;
+
+-  /** Get the parent element for this node
++  /** Get the parent element for this node.
+    * @returns The parent node
+    */
+   Element* get_parent();
+
+-  /** Get the next sibling for this node
++  /** Get the next sibling for this node.
+    * @returns The next sibling
+    */
+   const Node* get_next_sibling() const;
+
+-  /** Get the next sibling for this node
++  /** Get the next sibling for this node.
+    * @returns The next sibling
+    */
+   Node* get_next_sibling();
+
+-  /** Get the previous sibling for this node
++  /** Get the previous sibling for this node .
+    * @returns The previous sibling
+    */
+   const Node* get_previous_sibling() const;
+
+-  /** Get the previous sibling for this node
++  /** Get the previous sibling for this node.
+    * @returns The previous sibling
+    */
+   Node* get_previous_sibling();
+@@ -106,7 +107,7 @@
+    */
+   const NodeList get_children(const Glib::ustring& name = Glib::ustring()) const;
+
+-  /** Add a child element to this node
++  /** Add a child element to this node.
+    * @param name The new node name
+    * @param ns_prefix The namespace prefix. If the prefix has not been declared then this method will throw an exception.
+    * @returns The newly-created element
+@@ -114,6 +115,30 @@
+   Element* add_child(const Glib::ustring& name,
+                      const Glib::ustring& ns_prefix = Glib::ustring());
+
++  /** Add a child element to this node after the specified existing child node.
++   *
++   * @newin2p24
++   *
++   * @param previous_sibling An existing child node.
++   * @param name The new node name
++   * @param ns_prefix The namespace prefix. If the prefix has not been declared then this method will throw an exception.
++   * @returns The newly-created element
++   */
++  Element* add_child(xmlpp::Node* previous_sibling, const Glib::ustring& name,
++                     const Glib::ustring& ns_prefix = Glib::ustring());
++
++  /** Add a child element to this node before the specified existing child node.
++   *
++   * @newin2p24
++   *
++   * @param next_sibling An existing child node.
++   * @param name The new node name
++   * @param ns_prefix The namespace prefix. If the prefix has not been declared then this method will throw an exception.
++   * @returns The newly-created element
++   */
++  Element* add_child_before(xmlpp::Node* next_sibling, const Glib::ustring& name,
++                     const Glib::ustring& ns_prefix = Glib::ustring());
++
+   /** Remove the child node.
+    * @param node The child node to remove. This Node will be deleted and therefore unusable after calling this method.
+    */
+@@ -127,12 +152,12 @@
+   Node* import_node(const Node* node, bool recursive = true);
+
+
+-  /** Return the XPath of this node
++  /** Return the XPath of this node.
+    * @result The XPath of the node.
+    */
+   Glib::ustring get_path() const;
+
+-  /** Find nodes from a XPath expression
++  /** Find nodes from a XPath expression.
+    * @param xpath The XPath of the nodes.
+    */
+   NodeSet find(const Glib::ustring& xpath) const;
+@@ -141,7 +166,7 @@
+    */
+   typedef std::map<Glib::ustring, Glib::ustring> PrefixNsMap;
+
+-  /** Find nodes from a XPath expression
++  /** Find nodes from a XPath expression.
+    * @param xpath The XPath of the nodes.
+    * @param namespaces A map of namespace prefixes to namespace URIs to be used while finding.
+    */
+@@ -154,6 +179,11 @@
+   ///Access the underlying libxml implementation.
+   const _xmlNode* cobj() const;
+
++protected:
++
++  ///Create the C instance ready to be added to the parent node.
++  _xmlNode* create_new_child_node(const Glib::ustring& name, const Glib::ustring& ns_prefix);
++
+ private:
+   _xmlNode* impl_;
+ };


More information about the Frugalware-git mailing list