17 void do_list(
const Ex& tr, Ex::iterator it, std::function<
bool(Ex::iterator)>
f);
24 int list_size(
const Ex& tr, Ex::iterator it);
30 Ex::iterator
find_in_list(
const Ex& tr, Ex::iterator it, std::function<Ex::iterator(Ex::iterator)>
f);
36 Ex::iterator
find_in_subtree(
const Ex& tr, Ex::iterator it, std::function<
bool(Ex::iterator)>
f,
bool including_head=
true);
53 typename T::iterator
do_subtree(
const T& tr,
typename T::iterator it, std::function<
typename T::iterator(
typename T::iterator)>
f)
55 if(it==tr.end())
return it;
57 class T::post_order_iterator walk=it, last=it;
66 if(walk==it) cpy=
true;
101 Ex::sibling_iterator
it;
104 split_it(Ex::iterator it,
const std::string& delim =
"")
106 if (delim ==
"" || *it->name == delim) {
T::iterator do_subtree(const T &tr, typename T::iterator it, std::function< typename T::iterator(typename T::iterator)> f)
Apply a function on every node in the tree at and below the given node, depth-first.
Definition: Functional.hh:53
int list_size(const Ex &tr, Ex::iterator it)
For lists as defined above for 'do_list', return their size (in case you really need to know the size...
Definition: Functional.cc:25
Ex::iterator find_in_list(const Ex &tr, Ex::iterator it, std::function< Ex::iterator(Ex::iterator)> f)
Returns an iterator to the first element for which 'f' does not return tr.end().
Definition: Functional.cc:59
void do_list(const Ex &tr, Ex::iterator it, std::function< bool(Ex::iterator)> f)
Apply a function on every element of a list, or if the iterator 'it' does not point to a list,...
Definition: Functional.cc:6
Ex::iterator find_in_subtree(const Ex &tr, Ex::iterator it, std::function< bool(Ex::iterator)> f, bool including_head)
Returns an iterator to the first element for which 'f' returns 'true', or 'tr.end()'.
Definition: Functional.cc:33
Ex make_list(Ex el)
Ensure that the tree is a list, even if it contains only a single element.
Definition: Functional.cc:76
Functions to handle the exchange properties of two or more symbols in a product.
Definition: Adjform.cc:83
f
Definition: nevaluate.py:14
Definition: Functional.hh:81
pointer operator->()
Definition: Functional.hh:96
bool operator!=(const iterator &other)
Definition: Functional.hh:94
iterator()
Definition: Functional.hh:90
value_type * pointer
Definition: Functional.hh:86
ptrdiff_t difference_type
Definition: Functional.hh:83
value_type & reference
Definition: Functional.hh:84
Ex::sibling_iterator it
Definition: Functional.hh:101
reference operator*()
Definition: Functional.hh:95
Ex::sibling_iterator value_type
Definition: Functional.hh:82
iterator(Ex::sibling_iterator it)
Definition: Functional.hh:91
reference operator++()
Definition: Functional.hh:97
const value_type * const_pointer
Definition: Functional.hh:87
std::input_iterator_tag iterator_category
Definition: Functional.hh:88
const value_type & const_reference
Definition: Functional.hh:85
bool operator==(const iterator &other)
Definition: Functional.hh:93
Definition: Functional.hh:80
Ex::sibling_iterator begin_
Definition: Functional.hh:121
split_it(Ex::iterator it, const std::string &delim="")
Definition: Functional.hh:104
iterator begin()
Definition: Functional.hh:117
Ex::sibling_iterator end_
Definition: Functional.hh:121
iterator end()
Definition: Functional.hh:118