gem5
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Public Member Functions | Private Attributes | Friends | List of all members
Cycles Class Reference

Cycles is a wrapper class for representing cycle counts, i.e. More...

#include <types.hh>

Public Member Functions

constexpr Cycles (uint64_t _c)
 Explicit constructor assigning a value. More...
 
 Cycles ()
 Default constructor for parameter classes. More...
 
constexpr operator uint64_t () const
 Converting back to the value type. More...
 
Cyclesoperator++ ()
 Prefix increment operator. More...
 
Cyclesoperator-- ()
 Prefix decrement operator. More...
 
Cyclesoperator+= (const Cycles &cc)
 In-place addition of cycles. More...
 
constexpr bool operator> (const Cycles &cc) const
 Greater than comparison used for > Cycles(0). More...
 
constexpr Cycles operator+ (const Cycles &b) const
 
constexpr Cycles operator- (const Cycles &b) const
 
constexpr Cycles operator<< (const int32_t shift) const
 
constexpr Cycles operator>> (const int32_t shift) const
 

Private Attributes

uint64_t c
 Member holding the actual value. More...
 

Friends

std::ostream & operator<< (std::ostream &out, const Cycles &cycles)
 

Detailed Description

Cycles is a wrapper class for representing cycle counts, i.e.

a relative difference between two points in time, expressed in a number of clock cycles.

The Cycles wrapper class is a type-safe alternative to a typedef, aiming to avoid unintentional mixing of cycles and ticks in the code base.

Note that there is no overloading of the bool operator as the compiler is allowed to turn booleans into integers and this causes a whole range of issues in a handful locations. The solution to this problem would be to use the safe bool idiom, but for now we make do without the test and use the more elaborate comparison > Cycles(0).

Definition at line 83 of file types.hh.

Constructor & Destructor Documentation

constexpr Cycles::Cycles ( uint64_t  _c)
inlineexplicit

Explicit constructor assigning a value.

Definition at line 94 of file types.hh.

Cycles::Cycles ( )
inline

Default constructor for parameter classes.

Definition at line 97 of file types.hh.

Referenced by operator+(), operator-(), operator<<(), and operator>>().

Member Function Documentation

constexpr Cycles::operator uint64_t ( ) const
inline

Converting back to the value type.

Definition at line 100 of file types.hh.

References c.

constexpr Cycles Cycles::operator+ ( const Cycles b) const
inline

Definition at line 118 of file types.hh.

References c, and Cycles().

Cycles& Cycles::operator++ ( )
inline

Prefix increment operator.

Definition at line 103 of file types.hh.

References c.

Cycles& Cycles::operator+= ( const Cycles cc)
inline

In-place addition of cycles.

Definition at line 111 of file types.hh.

References c.

constexpr Cycles Cycles::operator- ( const Cycles b) const
inline

Definition at line 121 of file types.hh.

References c, and Cycles().

Cycles& Cycles::operator-- ( )
inline

Prefix decrement operator.

Is only temporarily used in the O3 CPU.

Definition at line 107 of file types.hh.

References c.

constexpr Cycles Cycles::operator<< ( const int32_t  shift) const
inline

Definition at line 127 of file types.hh.

References c, and Cycles().

constexpr bool Cycles::operator> ( const Cycles cc) const
inline

Greater than comparison used for > Cycles(0).

Definition at line 115 of file types.hh.

References c.

constexpr Cycles Cycles::operator>> ( const int32_t  shift) const
inline

Definition at line 130 of file types.hh.

References c, and Cycles().

Friends And Related Function Documentation

std::ostream& operator<< ( std::ostream &  out,
const Cycles cycles 
)
friend

Definition at line 34 of file types.cc.

Member Data Documentation

uint64_t Cycles::c
private

Member holding the actual value.

Definition at line 89 of file types.hh.

Referenced by operator uint64_t(), operator+(), operator++(), operator+=(), operator-(), operator--(), operator<<(), operator<<(), operator>(), and operator>>().


The documentation for this class was generated from the following file:

Generated on Fri Jun 9 2017 13:04:06 for gem5 by doxygen 1.8.6