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::replace(const TNode& first, const TNode& last) const
141 TNode next = p.next();
149 TNode::insert(const TNode& newNode) const
152 DOM::Node parent = node.get_parentNode();
153 parent.insertBefore(newNode.node, node);
157 TNode::append(const TNode& newNode) const
160 node.appendChild(newNode.node);
164 TNode::append(const TNode& first, const TNode& last) const
173 TNode next = p.next();
180 TNode::prepend(const TNode& newNode) const
183 DOM::Node parent = node.get_parentNode();
184 parent.insertBefore(newNode.node, parent.get_firstChild());
191 TNode::child(unsigned pos) const
195 while (p && pos-- > 0) p = p.next();
200 TNode::get(const std::string& name) const
203 return node.getAttribute(name);
207 TNode::set(const std::string& name, const std::string& value) const
210 node.setAttribute(name, value);