X-Git-Url: http://matita.cs.unibo.it/gitweb/?a=blobdiff_plain;f=helm%2FDEVEL%2Fmathml_editor%2Ftest%2Faux.cc;h=4b4404af4e41370e26c8a5cff9e525a440ef18fc;hb=85ccebb566c36671ca753debe09e6dd5c9dd0df7;hp=61f9e5d795e32372c9fa0016c600faa6acf97d08;hpb=89262281b6e83bd2321150f81f1a0583645eb0c8;p=helm.git diff --git a/helm/DEVEL/mathml_editor/test/aux.cc b/helm/DEVEL/mathml_editor/test/aux.cc index 61f9e5d79..4b4404af4 100644 --- a/helm/DEVEL/mathml_editor/test/aux.cc +++ b/helm/DEVEL/mathml_editor/test/aux.cc @@ -124,6 +124,14 @@ findCommonSiblings(const DOM::Element& first, const DOM::Element& last, 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) { @@ -188,17 +196,14 @@ rightSibling(const DOM::Node& node) extern "C" GdomeElement* find_common_ancestor(GdomeElement* first, GdomeElement* last) { - DOM::Element p(first); - DOM::Element q(last); - if (GdomeElement* res = gdome_cast_el(findCommonAncestor(p, q).gdome_object())) + if (GdomeNode* n = findCommonAncestor(DOM::Element(first), DOM::Element(last)).gdome_object()) { - GdomeException exc = 0; - gdome_el_ref(res, &exc); - assert(exc == 0); + GdomeElement* res = gdome_cast_el(n); + g_assert(res != NULL); return res; } else - return 0; + return NULL; } extern "C" void @@ -214,6 +219,32 @@ find_common_siblings(GdomeElement* first, GdomeElement* last, 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) {