X-Git-Url: http://matita.cs.unibo.it/gitweb/?a=blobdiff_plain;f=helm%2FDEVEL%2Fmathml_editor%2Ftest%2Faux.cc;fp=helm%2FDEVEL%2Fmathml_editor%2Ftest%2Faux.cc;h=0000000000000000000000000000000000000000;hb=1696761e4b8576e8ed81caa905fd108717019226;hp=bb17013fbd78af452af349ae6e4310743d02afc0;hpb=5325734bc2e4927ed7ec146e35a6f0f2b49f50c1;p=helm.git diff --git a/helm/DEVEL/mathml_editor/test/aux.cc b/helm/DEVEL/mathml_editor/test/aux.cc deleted file mode 100644 index bb17013fb..000000000 --- a/helm/DEVEL/mathml_editor/test/aux.cc +++ /dev/null @@ -1,261 +0,0 @@ -/* This file is part of EdiTeX, an editor of mathematical - * expressions based on TeX syntax. - * - * Copyright (C) 2002-2003 Luca Padovani , - * 2003 Paolo Marinelli . - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * - * For more information, please visit the project's home page - * http://helm.cs.unibo.it/editex/ - * or send an email to - */ - -#include -#include - -#include -#include -#include - -//#include "gmetadom.hh" - -namespace DOM = GdomeSmartDOM; - -static unsigned -getDepth(const DOM::Element& elem) -{ - unsigned length = 0; - DOM::Element p = elem; - - while (p) - { - p = p.get_parentNode(); - length++; - } - - return length; -} - -static DOM::Element -findCommonAncestor(const DOM::Element& first, const DOM::Element& last) -{ - assert(first); - assert(last); - - DOM::Element p(first); - DOM::Element q(last); - - if (p != q) - { - unsigned pDepth = getDepth(p); - unsigned qDepth = getDepth(q); - - while (p && pDepth > qDepth) - { - p = p.get_parentNode(); - pDepth--; - } - - while (q && qDepth > pDepth) - { - q = q.get_parentNode(); - qDepth--; - } - - assert(pDepth == qDepth); - - while (p && q && p != q) - { - p = p.get_parentNode(); - q = q.get_parentNode(); - } - } - - return p; -} - -static void -findCommonSiblings(const DOM::Element& first, const DOM::Element& last, - DOM::Element& firstS, DOM::Element& lastS) -{ - assert(first); - assert(last); - - DOM::Element p(first); - DOM::Element q(last); - - if (p != q) - { - unsigned pDepth = getDepth(p); - unsigned qDepth = getDepth(q); - - while (p && pDepth > qDepth) - { - p = p.get_parentNode(); - pDepth--; - } - - while (q && qDepth > pDepth) - { - q = q.get_parentNode(); - qDepth--; - } - - assert(pDepth == qDepth); - - while (p && q && p.get_parentNode() != q.get_parentNode()) - { - p = p.get_parentNode(); - q = q.get_parentNode(); - } - } - - firstS = p; - lastS = q; -} - -static DOM::Element -findElementWithRef(const DOM::Element& el) -{ - DOM::Element p = el; - while (p && !p.hasAttribute("xref")) p = p.get_parentNode(); - return p; -} - -static DOM::Node -leftmostChild(const DOM::Node& node) -{ - if (!node) return node; - - DOM::Node firstChild = node.get_firstChild(); - if (!firstChild) return node; - - return leftmostChild(firstChild); -} - -static DOM::Node -rightmostChild(const DOM::Node& node) -{ - if (!node) return node; - - DOM::Node lastChild = node.get_lastChild(); - if (!lastChild) return node; - - return rightmostChild(lastChild); -} - -static DOM::Node -leftSibling(const DOM::Node& node) -{ - DOM::Node p = node; - - if (!p) return p; - - while (p.get_parentNode() && p.get_parentNode().get_firstChild() == p) - p = p.get_parentNode(); - - if (!p.get_parentNode()) return DOM::Node(0); - - DOM::Node prevSibling = p.get_previousSibling(); - assert(prevSibling); - - return rightmostChild(prevSibling); -} - -static DOM::Node -rightSibling(const DOM::Node& node) -{ - DOM::Node p = node; - - if (!p) return p; - - DOM::Node firstChild = p.get_firstChild(); - if (firstChild) return firstChild; - - while (p.get_parentNode() && p.get_parentNode().get_lastChild() == p) - p = p.get_parentNode(); - - if (!p.get_parentNode()) return DOM::Node(0); - - DOM::Node nextSibling = p.get_nextSibling(); - assert(nextSibling); - - return leftmostChild(nextSibling); -} - -extern "C" GdomeElement* -find_common_ancestor(GdomeElement* first, GdomeElement* last) -{ - if (GdomeNode* n = findCommonAncestor(DOM::Element(first), DOM::Element(last)).gdome_object()) - { - GdomeElement* res = gdome_cast_el(n); - g_assert(res != NULL); - return res; - } - else - return NULL; -} - -extern "C" void -find_common_siblings(GdomeElement* first, GdomeElement* last, - GdomeElement** firstS, GdomeElement** lastS) -{ - DOM::Element fs(0); - DOM::Element ls(0); - - findCommonSiblings(DOM::Element(first), DOM::Element(last), fs, ls); - - if (firstS != NULL) *firstS = gdome_cast_el(fs.gdome_object()); - if (lastS != NULL) *lastS = gdome_cast_el(ls.gdome_object()); -} - -extern "C" GdomeElement* -find_element_with_ref(GdomeElement* elem) -{ - if (GdomeNode* n = findElementWithRef(DOM::Element(elem)).gdome_object()) - { - GdomeElement* res = gdome_cast_el(n); - g_assert(res != NULL); - return res; - } - else - return NULL; -} - -extern "C" GdomeElement* -find_common_ancestor_with_ref(GdomeElement* first, GdomeElement* last) -{ - if (GdomeNode* n = findElementWithRef(findCommonAncestor(DOM::Element(first), DOM::Element(last))).gdome_object()) - { - GdomeElement* res = gdome_cast_el(n); - g_assert(res != NULL); - return res; - } - else - return NULL; -} - -extern "C" void -delete_element(GdomeElement* elem) -{ - DOM::Element p(elem); - - DOM::Element parent = p.get_parentNode(); - assert(parent); - - parent.removeChild(p); -} -