9 DOM::Node p = node.get_nextSibling();
10 while (p && p.get_nodeType() != DOM::Node::ELEMENT_NODE) p = p.get_nextSibling();
19 if (n.isG()) return n.firstL();
28 DOM::Node p = node.get_previousSibling();
29 while (p && p.get_nodeType() != DOM::Node::ELEMENT_NODE) p = p.get_previousSibling();
38 if (n.isG()) return n.lastL();
47 DOM::Node p = node.get_lastChild();
48 while (p && p.get_nodeType() != DOM::Node::ELEMENT_NODE) p = p.get_previousSibling();
57 if (n.isG()) return n.lastL();
67 DOM::Node p = node.get_firstChild();
68 while (p && p.get_nodeType() != DOM::Node::ELEMENT_NODE) p = p.get_nextSibling();
76 if (TNode n = first())
77 if (n.isG()) return n.firstL();
87 // check also if there is a macro embellishment (\not)
88 if (isSb() || isSp()) return first().core();
96 DOM::Node p = node.get_parentNode();
97 assert(!p || p.get_nodeType() == DOM::Node::ELEMENT_NODE);
117 TNode::remove() const
120 DOM::Node parent = node.get_parentNode();
121 parent.removeChild(node);
125 TNode::replace(const TNode& newNode) const
128 DOM::Node parent = node.get_parentNode();
129 parent.replaceChild(newNode.node, node);
133 TNode::insert(const TNode& newNode) const
136 DOM::Node parent = node.get_parentNode();
137 parent.insertBefore(newNode.node, node);
141 TNode::append(const TNode& newNode) const
144 node.appendChild(newNode.node);
148 TNode::append(const TNode& first, const TNode& last) const
157 TNode next = p.next();
164 TNode::prepend(const TNode& newNode) const
167 DOM::Node parent = node.get_parentNode();
168 parent.insertBefore(newNode.node, parent.get_firstChild());
175 TNode::child(unsigned pos) const
179 while (p && pos-- > 0) p = p.next();
184 TNode::get(const std::string& name) const
187 return node.getAttribute(name);
191 TNode::set(const std::string& name, const std::string& value) const
194 node.setAttribute(name, value);