LCOV - code coverage report
Current view: top level - include/esys/repo - progresscallback_t.h (source / functions) Hit Total Coverage
Test: esysrepo_coverage.info Lines: 9 9 100.0 %
Date: 2026-08-01 10:43:40 Functions: 2 6 33.3 %

          Line data    Source code
       1             : /*!
       2             :  * \file esys/repo/progresscallback_t.h
       3             :  * \brief Progresscallback t for esysrepo
       4             :  *
       5             :  * \cond
       6             :  * __legal_b__
       7             :  *
       8             :  * Copyright (c) 2020 Michel Gillet
       9             :  * Distributed under the MIT License.
      10             :  * (See accompanying file LICENSE.txt or
      11             :  * copy at https://opensource.org/licenses/MIT)
      12             :  *
      13             :  * __legal_e__
      14             :  * \endcond
      15             :  *
      16             :  */
      17             : 
      18             : #pragma once
      19             : 
      20             : #include "esys/repo/esysrepo_defs.h"
      21             : #include "esys/repo/progresscallbackbase.h"
      22             : 
      23             : //<swig_inc/>
      24             : 
      25             : namespace esys
      26             : {
      27             : 
      28             : namespace repo
      29             : {
      30             : 
      31             : /*! \tparam OBJ the callee object type */
      32             : template<typename OBJ>
      33             : class ProgressCallback_t : public ProgressCallbackBase
      34             : {
      35             : public:
      36             :     typedef void (OBJ::*CallbackType)(const git::Progress &progress);
      37             : 
      38             :     //! Constructor
      39             :     ProgressCallback_t();
      40             : 
      41             :     //! Constructor
      42             :     /*!
      43             :      * \param[in] callee the callee
      44             :      * \param[in] callback the callback
      45             :      */
      46             :     ProgressCallback_t(OBJ *callee, CallbackType callback);
      47             : 
      48             :     //! Destructor
      49             :     ~ProgressCallback_t() override;
      50             : 
      51             :     //! Set the callee
      52             :     /*!
      53             :      * \param[in] callee the callee
      54             :      */
      55             :     void set_callee(OBJ *callee);
      56             : 
      57             :     //! Get the callee object
      58             :     /*!
      59             :      * \return the callee object
      60             :      */
      61             :     OBJ *get_callee();
      62             : 
      63             :     //! Set the callback
      64             :     /*!
      65             :      * \param[in] callback the callback
      66             :      */
      67             :     void set_callback(CallbackType callback);
      68             : 
      69             :     //! Get the callback
      70             :     /*!
      71             :      * \return the callback
      72             :      */
      73             :     CallbackType get_callback();
      74             : 
      75             :     //! Notify git progress
      76             :     /*!
      77             :      * \param[in] progress the progress
      78             :      */
      79             :     void git_progress_notif(const git::Progress &progress) override;
      80             : 
      81             :     ProgressCallback_t(const ProgressCallback_t &) = delete;
      82             :     ProgressCallback_t(ProgressCallback_t &&) = delete;
      83             :     ProgressCallback_t &operator=(const ProgressCallback_t &other) = delete;
      84             : 
      85             : private:
      86             :     //!< \cond DOXY_IMPL
      87             :     OBJ *m_callee = nullptr; //!< The callee object
      88             :     CallbackType m_callback = nullptr; //!< The member function callback
      89             :     //!< \endcond
      90             : };
      91             : 
      92             : template<typename OBJ>
      93             : ProgressCallback_t<OBJ>::ProgressCallback_t()
      94             : {
      95             : }
      96             : 
      97             : template<typename OBJ>
      98         125 : ProgressCallback_t<OBJ>::ProgressCallback_t(OBJ *callee, CallbackType callback)
      99         125 :     : m_callee(callee)
     100         125 :     , m_callback(callback)
     101             : {
     102             : }
     103             : 
     104             : template<typename OBJ>
     105         125 : ProgressCallback_t<OBJ>::~ProgressCallback_t()
     106             : {
     107         125 : }
     108             : 
     109             : template<typename OBJ>
     110             : void ProgressCallback_t<OBJ>::set_callee(OBJ *callee)
     111             : {
     112             :     m_callee = callee;
     113             : }
     114             : 
     115             : template<typename OBJ>
     116             : OBJ *ProgressCallback_t<OBJ>::get_callee()
     117             : {
     118             :     return m_callee;
     119             : }
     120             : 
     121             : template<typename OBJ>
     122             : void ProgressCallback_t<OBJ>::set_callback(CallbackType callback)
     123             : {
     124             :     m_callback = callback;
     125             : }
     126             : 
     127             : template<typename OBJ>
     128             : typename ProgressCallback_t<OBJ>::CallbackType ProgressCallback_t<OBJ>::get_callback()
     129             : {
     130             :     return m_callback;
     131             : }
     132             : 
     133             : template<typename OBJ>
     134        1155 : void ProgressCallback_t<OBJ>::git_progress_notif(const git::Progress &progress)
     135             : {
     136        1155 :     if (m_callee == nullptr) return;
     137        1155 :     if (m_callback == nullptr) return;
     138             : 
     139        1155 :     (m_callee->*m_callback)(progress);
     140             : }
     141             : 
     142             : } // namespace repo
     143             : 
     144             : } // namespace esys

Generated by: LCOV version 1.14