4#ifndef _Stroika_Framework_SystemPerformance_Instrument_h_
5#define _Stroika_Framework_SystemPerformance_Instrument_h_ 1
7#include "Stroika/Frameworks/StroikaPreComp.h"
12#include "Stroika/Foundation/Common/Property.h"
13#include "Stroika/Foundation/Containers/Mapping.h"
14#include "Stroika/Foundation/Containers/Set.h"
16#include "Stroika/Foundation/DataExchange/ObjectVariantMapper.h"
19#include "Stroika/Frameworks/SystemPerformance/Measurement.h"
20#include "Stroika/Frameworks/SystemPerformance/MeasurementSet.h"
25namespace Stroika::Frameworks::SystemPerformance {
90 virtual ~IRep () =
default;
92 virtual unique_ptr<IRep> Clone ()
const = 0;
93 virtual shared_ptr<ICaptureContext> GetContext ()
const = 0;
94 virtual void SetContext (
const shared_ptr<ICaptureContext>&
context) = 0;
121 template <
typename T>
132 template <
typename T>
134 template <
typename T>
179 nonvirtual
bool operator== (
const Instrument& rhs)
const;
184 nonvirtual strong_ordering operator<=> (
const Instrument& rhs)
const
186 return fInstrumentName_ <=> rhs.fInstrumentName_;
194 unique_ptr<IRep> fCaptureRep_;
205#include "Instrument.inl"
time_point< RealtimeClock, DurationSeconds > TimePointSeconds
TimePointSeconds is a simpler approach to chrono::time_point, which doesn't require using templates e...
String is like std::u32string, except it is much easier to use, often much more space efficient,...
Set<T> is a container of T, where once an item is added, additionally adds () do nothing.
An Atom is like a String, except that its much cheaper to copy/store/compare, and the semantics of co...
ObjectVariantMapper can be used to map C++ types to and from variant-union types, which can be transp...
NOT a real mutex - just a debugging infrastructure support tool so in debug builds can be assured thr...