1
0
mirror of https://git.dev.opencascade.org/repos/occt.git synced 2025-04-16 10:08:36 +03:00
occt/src/OSD/OSD_PerfMeter.hxx
azn 96f3baccc5 0025619: CAST analysis: Avoid classes with a non-empty destructor and not implementing both an assignment operator and a copy constructor
- Fix compilation errors.
- Branch has been rebased on new master.

0025619: CAST analysis: Avoid classes with a non-empty destructor and not implementing both an assignment operator and a copy constructor

The problem has been removed from following classes:
- tsee_entity
- Select3D_PointData
- Standard_MMgrFactory
- ProjLib_OnSurface
- BinomAllocator
- OSD_PerfMeter
- StorageInfo
- OpenGl_UnpackAlignmentSentry
- IntPatch_InfoPD
- TableauRejection
- Draw_View
- BOPTest_Session
- BOPCol_MemBlock
- BSB_T3Bits
- NCollection_Handle::Ptr
- Buffer (from Standard_Boolean Message_MsgFile::LoadFile (const Standard_CString))
2015-04-30 14:04:02 +03:00

76 lines
2.4 KiB
C++

// Created on: 2002-04-03
// Created by: Michael SAZONOV
// Copyright (c) 2002-2014 OPEN CASCADE SAS
//
// This file is part of Open CASCADE Technology software library.
//
// This library is free software; you can redistribute it and/or modify it under
// the terms of the GNU Lesser General Public License version 2.1 as published
// by the Free Software Foundation, with special exception defined in the file
// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
// distribution for complete text of the license and disclaimer of any warranty.
//
// Alternatively, this file may be used under the terms of Open CASCADE
// commercial license or contractual agreement.
#ifndef OSD_PerfMeter_HeaderFile
#define OSD_PerfMeter_HeaderFile
#include <OSD_PerfMeter.h>
//! This class enables measuring the CPU time between two points of code execution, regardless of the scope of these points of code.
//! A meter is identified by its name (string). So multiple objects in various places of user code may point to the same meter.
//! The results will be printed on stdout upon finish of the program.
//! For details see OSD_PerfMeter.h
class OSD_PerfMeter
{
public:
//! Constructs a void meter (to further call Init and Start)
OSD_PerfMeter() : myIMeter(-1) {}
//! Constructs and starts (if autoStart is true) the named meter
OSD_PerfMeter (const char* theMeter,
const bool theToAutoStart = true)
: myIMeter (perf_get_meter (theMeter, 0, 0))
{
if (myIMeter < 0) myIMeter = perf_init_meter (theMeter);
if (theToAutoStart) Start();
}
//! Prepares the named meter
void Init (const char* theMeter)
{
myIMeter = perf_get_meter (theMeter, 0, 0);
if (myIMeter < 0) myIMeter = perf_init_meter (theMeter);
}
//! Starts the meter
void Start() const { perf_start_imeter(myIMeter); }
//! Stops the meter
void Stop() const { perf_stop_imeter(myIMeter); }
//! Increments the counter w/o time measurement
void Tick() const { perf_tick_imeter(myIMeter); }
//! Outputs the meter data and resets it to initial state
void Flush() const { perf_close_imeter(myIMeter); }
//! Assures stopping upon destruction
~OSD_PerfMeter() { if (myIMeter >= 0) Stop(); }
private:
OSD_PerfMeter(const OSD_PerfMeter&);
OSD_PerfMeter& operator= (const OSD_PerfMeter&);
protected:
int myIMeter;
};
#endif // OSD_PerfMeter_HeaderFile