//This file is part of Bertini 2. // //python/generic_observable.hpp is free software: you can redistribute it and/or modify //it under the terms of the GNU General Public License as published by //the Free Software Foundation, either version 3 of the License, or //(at your option) any later version. // //python/generic_observable.hpp is distributed in the hope that it will be useful, //but WITHOUT ANY WARRANTY; without even the implied warranty of //MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the //GNU General Public License for more details. // //You should have received a copy of the GNU General Public License //along with python/generic_observable.hpp. If not, see . // // Copyright(C) 2017-2018 by Bertini2 Development Team // // See for a copy of the license, // as well as COPYING. Bertini2 is provided with permitted // additional terms in the b2/licenses/ directory. // individual authors of this file include: // // silviana amethyst // UWEC // Fall 2017, Spring 2018 // // // python/generic_observable.hpp: source file for exposing trackers to python. #pragma once #include "python_common.hpp" #include namespace bertini{ namespace python{ template class ObservableVisitor : public def_visitor> { friend class def_visitor_access; static void AddObserver(object& obj, object& obs) { ObsT& self=extract(obj)(); AnyObserver& observer=extract(obs)(); self.AddObserver(observer); }; static void RemoveObserver(object& obj, object& obs) { ObsT& self=extract(obj)(); AnyObserver& observer=extract(obs)(); self.RemoveObserver(observer); }; public: template void visit(PyClass& cl) const{ cl .def("add_observer", &ObservableVisitor::AddObserver) .def("remove_observer", &ObservableVisitor::RemoveObserver) ; } }; }} // namespaces