Alien  1.3.0
Developer documentation
Loading...
Searching...
No Matches
Trace.h
1/*
2 * Copyright 2020 IFPEN-CEA
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 *
16 * SPDX-License-Identifier: Apache-2.0
17 */
18
19#pragma once
20
21#include <alien/utils/ObjectWithTrace.h>
22
23/*---------------------------------------------------------------------------*/
24/*---------------------------------------------------------------------------*/
25
26namespace Alien
27{
28
29/*---------------------------------------------------------------------------*/
30/*---------------------------------------------------------------------------*/
31
32template <typename T>
33void alien_debug([[maybe_unused]] T&& t)
34{
35#ifndef NDEBUG
36 if (Universe().traceMng() == nullptr)
37 return;
38 ObjectWithTrace().alien_debug(std::move(t));
39#endif
40}
41
42/*---------------------------------------------------------------------------*/
43
44template <typename T>
45void alien_debug([[maybe_unused]] bool flag, [[maybe_unused]] T&& t)
46{
47#ifndef NDEBUG
48 if (not flag)
49 return;
50 if (Universe().traceMng() == nullptr)
51 return;
52 ObjectWithTrace().alien_debug(std::move(t));
53#endif
54}
55
56/*---------------------------------------------------------------------------*/
57
58template <typename T>
59void alien_info(T&& t)
60{
61 if (Universe().traceMng() == nullptr)
62 return;
63 ObjectWithTrace().alien_info(std::move(t));
64}
65
66/*---------------------------------------------------------------------------*/
67
68template <typename T>
69void alien_info(bool flag, T&& t)
70{
71 if (not flag)
72 return;
73 if (Universe().traceMng() == nullptr)
74 return;
75 ObjectWithTrace().alien_info(std::move(t));
76}
77
78/*---------------------------------------------------------------------------*/
79
80template <typename T>
81void alien_fatal(T&& t)
82{
83 if (Universe().traceMng() == nullptr)
84 return;
85 ObjectWithTrace().alien_fatal(std::move(t));
86}
87
88/*---------------------------------------------------------------------------*/
89
90template <typename T>
91void alien_fatal(bool flag, T&& t)
92{
93 if (not flag)
94 return;
95 if (Universe().traceMng() == nullptr)
96 return;
97 ObjectWithTrace().alien_fatal(std::move(t));
98}
99
100/*---------------------------------------------------------------------------*/
101
102template <typename T>
103void alien_warning(T&& t)
104{
105 if (Universe().traceMng() == nullptr)
106 return;
107 ObjectWithTrace().alien_warning(std::move(t));
108}
109
110/*---------------------------------------------------------------------------*/
111
112template <typename T>
113void alien_warning(bool flag, T&& t)
114{
115 if (not flag)
116 return;
117 if (Universe().traceMng() == nullptr)
118 return;
119 ObjectWithTrace().alien_warning(std::move(t));
120}
121
122/*---------------------------------------------------------------------------*/
123
124inline TraceMessage
125cout()
126{
127 return Universe().traceMng()->info();
128}
129
130/*---------------------------------------------------------------------------*/
131/*---------------------------------------------------------------------------*/
132
133} // namespace Alien
134
135/*---------------------------------------------------------------------------*/
136/*---------------------------------------------------------------------------*/
Alien universe. Common structure to store shared objects between all elements of the library Alien.
Definition Universe.h:53
Arccore::ITraceMng * traceMng() const
Get the trace manager.
Definition Universe.cc:110
-- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature --
Definition BackEnd.h:17