Qt Reference Documentation

# ClockCycleCounter.h Example File

demos/spectrum/3rdparty/fftreal/stopwatch/ClockCycleCounter.h

     /*****************************************************************************

             ClockCycleCounter.h
             Copyright (c) 2003 Laurent de Soras

     Instrumentation class, for accurate time interval measurement. You may have
     to modify the implementation to adapt it to your system and/or compiler.

     --- Legal stuff ---

     This library is free software; you can redistribute it and/or
     modify it under the terms of the GNU Lesser General Public
     License as published by the Free Software Foundation; either
     version 2.1 of the License, or (at your option) any later version.

     This library 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
     Lesser General Public License for more details.

     You should have received a copy of the GNU Lesser General Public
     License along with this library; if not, write to the Free Software
     Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA

     *Tab=3***********************************************************************/

     #if ! defined (stopwatch_ClockCycleCounter_HEADER_INCLUDED)
     #define stopwatch_ClockCycleCounter_HEADER_INCLUDED

     #if defined (_MSC_VER)
             #pragma once
             #pragma warning (4 : 4250) // "Inherits via dominance."
     #endif

     /*\\\ INCLUDE FILES \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\*/

     #include        "def.h"
     #include        "Int64.h"

     namespace stopwatch
     {

     class ClockCycleCounter
     {

     /*\\\ PUBLIC \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\*/

     public:

                                                     ClockCycleCounter ();

             stopwatch_FORCEINLINE void
                                                     start ();
             stopwatch_FORCEINLINE void
                                                     stop_lap ();
             Int64                           get_time_total () const;
             Int64                           get_time_best_lap () const;

     /*\\\ PROTECTED \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\*/

     protected:

     /*\\\ PRIVATE \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\*/

     private:

             void                            compute_clk_mul ();
             void                            compute_measure_time_total ();
             void                            compute_measure_time_lap ();

             static void             spend_time ();
             static stopwatch_FORCEINLINE Int64
                                                     read_clock_counter ();

             Int64                           _start_time;
             Int64                           _state;
             Int64                           _best_score;

             static Int64    _measure_time_total;
             static Int64    _measure_time_lap;
             static int              _clk_mul;
             static bool             _init_flag;

     /*\\\ FORBIDDEN MEMBER FUNCTIONS \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\*/

     private:

                                                     ClockCycleCounter (const ClockCycleCounter &other);
             ClockCycleCounter &
                                                     operator = (const ClockCycleCounter &other);
             bool                            operator == (const ClockCycleCounter &other);
             bool                            operator != (const ClockCycleCounter &other);

     };      // class ClockCycleCounter

     }       // namespace stopwatch

     #include        "ClockCycleCounter.hpp"

     #endif  // stopwatch_ClockCycleCounter_HEADER_INCLUDED

     /*\\\ EOF \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\*/