Arcane  4.1.12.0
User documentation
Loading...
Searching...
No Matches
DataTracer.h
1// -*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
2//-----------------------------------------------------------------------------
3// Copyright 2000-2026 CEA (www.cea.fr) IFPEN (www.ifpenergiesnouvelles.com)
4// See the top-level COPYRIGHT file for details.
5// SPDX-License-Identifier: Apache-2.0
6//-----------------------------------------------------------------------------
7/*---------------------------------------------------------------------------*/
8/* DataTracer.h (C) 2000-2025 */
9/* */
10/* Data tracer for a data item. */
11/*---------------------------------------------------------------------------*/
12#ifndef ARCANE_CORE_DATATYPE_DATATRACER_H
13#define ARCANE_CORE_DATATYPE_DATATRACER_H
14/*---------------------------------------------------------------------------*/
15/*---------------------------------------------------------------------------*/
16
17#include "arcane/utils/ITraceMng.h"
18#include "arcane/utils/String.h"
19
20#include "arcane/core/datatype/IDataTracer.h"
22
23/*---------------------------------------------------------------------------*/
24/*---------------------------------------------------------------------------*/
25
26namespace Arcane
27{
28
29/*---------------------------------------------------------------------------*/
30/*---------------------------------------------------------------------------*/
31
32/*!
33 * \internal
34 * \brief DataTracer for a data of type \a DataType.
35 */
36template <typename DataType>
37class DataTracerT
38: public IDataTracerT<DataType>
39{
40 public:
41
42 DataTracerT(ITraceMng* msg, Integer index, eTraceType trace_type, const String& var_name)
43 : m_msg(msg)
44 , m_index(index)
45 , m_trace_type(trace_type)
46 , m_var_name(var_name)
47 {
48 }
49 virtual ~DataTracerT() {}
50
51 public:
52
53 virtual void traceAccess(const DataType& value)
54 {
55 m_msg->info() << "TraceAccess " << m_var_name << " i=" << m_index
56 << " V=" << value;
58 }
59 virtual void traceRead(const DataType& value)
60 {
61 if (m_trace_type == TT_Read)
62 m_msg->info() << "TraceRead " << m_var_name << " i=" << m_index
63 << " V=" << value;
65 }
66 virtual void traceWrite(const DataType& old_value, const DataType& new_value)
67 {
68 if (m_trace_type == TT_Write)
69 m_msg->info() << "TraceWrite " << m_var_name << " i=" << m_index
70 << " V=" << old_value << ' ' << new_value;
72 }
73
74 private:
75
76 ITraceMng* m_msg;
77 Integer m_index;
78 eTraceType m_trace_type;
79 String m_var_name;
80};
81
82/*---------------------------------------------------------------------------*/
83/*---------------------------------------------------------------------------*/
84
85} // namespace Arcane
86
87/*---------------------------------------------------------------------------*/
88/*---------------------------------------------------------------------------*/
89
90#endif
File containing the definitions of data types managed by Arcane.
virtual void traceWrite(const DataType &old_value, const DataType &new_value)
Trace message for a write access of a value.
Definition DataTracer.h:66
virtual void traceAccess(const DataType &value)
Trace message for an access (read or write) to a value.
Definition DataTracer.h:53
virtual void traceRead(const DataType &value)
Trace message for a read access of a value.
Definition DataTracer.h:59
-- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature --
void arcaneTraceBreakpoint()
Breakpoint usable by a debugger for tracing.
Definition DataTracer.cc:29
Int32 Integer
Type representing an integer.
eTraceType
Possible trace type.
Definition DataTypes.h:194