12#ifndef ARCANE_ENUMERATORTRACEWRAPPER_H
13#define ARCANE_ENUMERATORTRACEWRAPPER_H
17#include "arcane/utils/ArrayView.h"
18#include "arcane/utils/TraceInfo.h"
25#ifndef ARCANE_TRACE_ENUMERATOR
59 m_has_trace_info =
true;
62 m_has_trace_info =
false;
68 return (m_has_trace_info) ? &m_trace_info :
nullptr;
73 std::array<Int64, 8> m_counters = {};
74 Int64 m_begin_time = 0;
75 TraceInfo m_trace_info;
76 bool m_has_trace_info =
false;
91template <
typename TrueEnumerator,
typename TracerInterface>
93:
public TrueEnumerator
98 : TrueEnumerator(tenum)
100#ifndef ARCCORE_DEVICE_CODE
101 m_tracer = TracerInterface::singleton();
103 m_tracer->enterEnumerator(*
this, m_infos);
107 : TrueEnumerator(tenum)
109#ifndef ARCCORE_DEVICE_CODE
110 m_tracer = TracerInterface::singleton();
113 m_tracer->enterEnumerator(*
this, m_infos);
119#ifndef ARCCORE_DEVICE_CODE
121 m_tracer->exitEnumerator(*
this, m_infos);
127 TracerInterface* m_tracer =
nullptr;
134#if defined(ARCANE_TRACE_ENUMERATOR)
135#define A_TRACE_ITEM_ENUMERATOR(_EnumeratorClassName) \
136 ::Arcane::EnumeratorTraceWrapper<_EnumeratorClassName, ::Arcane::IItemEnumeratorTracer>
137#define A_TRACE_ENUMERATOR_WHERE , A_FUNCINFO
139#define A_TRACE_ITEM_ENUMERATOR(_EnumeratorClassName) \
141#define A_TRACE_ENUMERATOR_WHERE
Informations pour les traces d'un énumérator.
const TraceInfo * traceInfo() const
Informations de trace (ou nullptr) si aucune.
Int64 beginTime() const
Temps du début en nanoseconde.
Int64ArrayView counters()
Valeurs de compteurs hardware.
void setTraceInfo(const TraceInfo *ti)
Positionne les informations de trace.
void setBeginTime(Int64 v)
Positionne le temps de début.
Wrapper autour d'un énumérator pour les traces.
Vue modifiable d'un tableau d'un type T.
-*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
ArrayView< Int64 > Int64ArrayView
Equivalent C d'un tableau à une dimension d'entiers 64 bits.