BioCMAMC-ST
common.hpp
1#ifndef __COMMON_EXPORT_HPP__
2#define __COMMON_EXPORT_HPP__
3
4#include <Kokkos_Core_fwd.hpp>
5#include <biocma_cst_config.hpp>
6#include <string_view>
7
8using ComputeSpace = Kokkos::DefaultExecutionSpace;
9using HostSpace = Kokkos::DefaultHostExecutionSpace;
10
11#ifdef ENABLE_KOKKOS_PROFILING
12# include <Kokkos_Profiling_ScopedRegion.hpp>
13# define PROFILE_SECTION(__label_section__) \
14 Kokkos::Profiling::ScopedRegion region(__label_section__);
15#else
16# define PROFILE_SECTION(__label_section__) ;
17#endif
18
19#define EIGEN_INDEX(__VALUE__) static_cast<int>(__VALUE__)
20
21consteval bool
22check_version(std::array<int, 3> v)
23{
24 return (v[0] == _BIOMC_VERSION_MAJOR) && (v[1] == _BIOMC_VERSION_MINOR)
25 && (v[2] == _BIOMC_VERSION_DEV);
26}
27
28#ifndef NDEBUG
29# include <iostream>
30# include <source_location>
31class Canary
32{
33public:
34 Canary() = delete;
35 Canary(const Canary&) = delete;
36 Canary(Canary&&) = delete;
37 Canary& operator=(const Canary&) = delete;
38 Canary& operator=(Canary&&) = delete;
39
40 explicit Canary(std::string_view lbl, std::source_location location)
41 : _lbl(lbl)
42 {
43 // std::cout << "\033[1;31m" << location.function_name() << "\033[0m " <<
44 // lbl << std::endl;
45 std::cout << location.function_name() << ": " << lbl << std::endl;
46 }
47
49 {
50 std::cout << "END " << _lbl << std::endl;
51 }
52
53private:
54 std::string _lbl;
55};
56# define MkCanary(x) Canary(x, std::source_location());
57#else
58# define MkCanary(x)
59#endif
60
61#endif //__COMMON_EXPORT_HPP__
Canary & operator=(const Canary &)=delete
~Canary()
Definition common.hpp:48
Canary(Canary &&)=delete
Canary()=delete
Canary(std::string_view lbl, std::source_location location)
Definition common.hpp:40
Canary(const Canary &)=delete
Canary & operator=(Canary &&)=delete
std::string _lbl
Definition common.hpp:54