ChimeraTK-ApplicationCore 04.06.00
Loading...
Searching...
No Matches
AccessorConcepts.h
Go to the documentation of this file.
1// SPDX-FileCopyrightText: Deutsches Elektronen-Synchrotron DESY, MSK, ChimeraTK Project <chimeratk-support@desy.de>
2// SPDX-License-Identifier: LGPL-3.0-or-later
3#pragma once
4
5#include <ChimeraTK/SupportedUserTypes.h>
6
7namespace ChimeraTK {
8
9 template<typename UserType>
10 class ScalarAccessor;
11
12 template<typename UserType>
13 class ScalarPushInput;
14
15 template<typename UserType>
16 class ScalarPushInputWB;
17
18 template<typename UserType>
19 class ArrayAccessor;
20
21 template<typename UserType>
22 class ArrayPushInput;
23
24 template<typename UserType>
25 class ArrayPushInputWB;
26
30 template<typename T>
31 concept push_input = requires {
32 typename T::value_type;
33 requires std::is_base_of<ScalarPushInput<typename T::value_type>, T>::value ||
34 std::is_base_of<ScalarPushInputWB<typename T::value_type>, T>::value ||
35 std::is_base_of<ArrayPushInput<typename T::value_type>, T>::value ||
36 std::is_base_of<ArrayPushInputWB<typename T::value_type>, T>::value;
37 requires user_type<typename T::value_type>;
38 };
39
40 template<typename T>
41 concept scalar_accessor = std::is_base_of<ScalarAccessor<typename T::value_type>, T>::value;
42
43 template<typename T>
44 concept array_accessor = std::is_base_of<ArrayAccessor<typename T::value_type>, T>::value;
45
46} // namespace ChimeraTK
Concept requiring a type to be one of the ApplicationCore push input accessor types (scalar or array)...
InvalidityTracer application module.