3 #include <pybind11/pybind11.h>
20 Ex::iterator it = ex->begin();
21 if (ex->is_valid(it)) {
23 algo.set_progress_monitor(pm);
25 ex->update_state(algo.apply_pre_order(repeat));
27 ex->update_state(algo.apply_generic(it, deep, repeat, depth));
41 template <
class Algo,
typename Arg1>
48 template <
class Algo,
typename Arg1,
typename Arg2>
55 template <
class Algo,
typename Arg1,
typename Arg2,
typename Arg3>
71 template<
class Algo,
typename... Args,
typename... PyArgs>
72 void def_algo(pybind11::module& m,
const char* name,
bool deep,
bool repeat,
unsigned int depth, PyArgs... pyargs)
75 &apply_algo<Algo, Args...>,
77 std::forward<PyArgs>(pyargs)...,
78 pybind11::arg(
"deep") = deep,
79 pybind11::arg(
"repeat") = repeat,
80 pybind11::arg(
"depth") = depth,
81 pybind11::doc(
read_manual(m,
"algorithms", name).c_str()),
82 pybind11::return_value_policy::reference_internal);
92 template <
class Algo,
typename Arg1>
99 template <
class Algo,
typename Arg1,
typename Arg2>
113 template<
class Algo,
typename... Args,
typename... PyArgs>
114 void def_algo_preorder(pybind11::module& m,
const char* name,
bool deep,
bool repeat,
unsigned int depth, PyArgs... pyargs)
117 &apply_algo_preorder<Algo, Args...>,
119 std::forward<PyArgs>(pyargs)...,
120 pybind11::arg(
"deep") = deep,
121 pybind11::arg(
"repeat") = repeat,
122 pybind11::arg(
"depth") = depth,
123 pybind11::doc(
read_manual(m,
"algorithms", name).c_str()),
124 pybind11::return_value_policy::reference_internal);
Object keeping track of time spent in nested execution blocks, and keeping track of out-of-band messa...
Definition: ProgressMonitor.hh:17
void def_algo(pybind11::module &m, const char *name, bool deep, bool repeat, unsigned int depth, PyArgs... pyargs)
Method to declare a Python function with variable number of arguments, and make that call a C++ algor...
Definition: py_algorithms.hh:72
Kernel * get_kernel_from_scope()
Get a pointer to the currently visible kernel.
Definition: py_kernel.cc:41
void def_algo_preorder(pybind11::module &m, const char *name, bool deep, bool repeat, unsigned int depth, PyArgs... pyargs)
Method to declare a Python function with variable number of arguments, and make that call a C++ algor...
Definition: py_algorithms.hh:114
Ex_ptr apply_algo_base(Algo &algo, Ex_ptr ex, bool deep, bool repeat, unsigned int depth, bool pre_order=false)
Generic internal entry point for the Python side to execute a C++ algorithm.
Definition: py_algorithms.hh:18
Functions to handle the exchange properties of two or more symbols in a product.
Definition: Adjform.cc:83
Ex_ptr apply_algo(Ex_ptr ex, bool deep, bool repeat, unsigned int depth)
Definition: py_algorithms.hh:35
ProgressMonitor * get_progress_monitor()
Definition: py_progress.cc:18
void call_post_process(Kernel &kernel, Ex_ptr ex)
Definition: py_ex.cc:583
void init_algorithms(py::module &m)
Definition: py_algorithms.cc:74
std::shared_ptr< Ex > Ex_ptr
Definition: py_ex.hh:9
std::string read_manual(pybind11::module &m, const char *category, const char *name)
Definition: py_helpers.cc:67
Ex_ptr apply_algo_preorder(Ex_ptr ex, bool deep, bool repeat, unsigned int depth)
Definition: py_algorithms.hh:86