From 8e79972fab2d5527896225736d73e90bab73f21d Mon Sep 17 00:00:00 2001 From: Jürgen Knödlseder Date: Fri, 12 Aug 2016 17:45:00 +0200 Subject: [PATCH] Add ctobservation::_unbinned_observations() generator to Python interface (#1828) --- pyext/ctobservation.i | 26 ++++++++++++++++++++++++-- src/support/ctobservation.hpp | 15 ++++++++++----- 2 files changed, 34 insertions(+), 7 deletions(-) diff --git a/pyext/ctobservation.i b/pyext/ctobservation.i index 64e2a30..1b62df4 100644 --- a/pyext/ctobservation.i +++ b/pyext/ctobservation.i @@ -53,13 +53,35 @@ public: virtual void run(void) = 0; virtual void save(void) = 0; - // Methods + // Public methods const GObservations& obs(void) const; + + // Make methods private in Python by prepending an underscore + %rename(_first_unbinned_observation) first_unbinned_observation; + %rename(_next_unbinned_observation) next_unbinned_observation; + + // Protected methods + GCTAObservation* first_unbinned_observation(void); + GCTAObservation* next_unbinned_observation(void); }; /***********************************************************************//** - * @brief Likelihood tool Python extensions + * @brief Observation tool base class C++ extensions ***************************************************************************/ %extend ctobservation { } + + +/***********************************************************************//** + * @brief Observation tool base class Python extensions + ***************************************************************************/ +%pythoncode %{ +def _unbinned_observations(self): + obs = self._first_unbinned_observation() + while obs != None: + yield obs + obs = self._next_unbinned_observation() +ctool._unbinned_observations = _unbinned_observations +cscript._unbinned_observations = _unbinned_observations +%} diff --git a/src/support/ctobservation.hpp b/src/support/ctobservation.hpp index 0768352..46f7d34 100644 --- a/src/support/ctobservation.hpp +++ b/src/support/ctobservation.hpp @@ -65,18 +65,23 @@ public: // Methods const GObservations& obs(void) const; +#ifdef SWIG +public: +#else protected: - // Protected methods - void init_members(void); - void copy_members(const ctobservation& app); - void free_members(void); - +#endif // Iterator methods and members GCTAObservation* first_unbinned_observation(void); GCTAObservation* next_unbinned_observation(void); const GCTAObservation* first_unbinned_observation(void) const; const GCTAObservation* next_unbinned_observation(void) const; +protected: + // Protected methods + void init_members(void); + void copy_members(const ctobservation& app); + void free_members(void); + // Protected members GObservations m_obs; //!< Observation container -- libgit2 0.21.4