Algorithms Library Toolkit
A toolkit for algorithms, especially for algorithms on formal languages
NormalizationRegistration.hpp
Go to the documentation of this file.
1
6#pragma once
7
9
10#include <ext/registration>
11
12namespace registration {
13
15};
16
17template < class ReturnType >
18using NormalizationRegisterImplBase = std::conditional_t < std::is_same < ReturnType, core::normalizationResult < ReturnType > >::value, NormalizationRegisterEmpty, ext::Register < std::list < std::unique_ptr < abstraction::NormalizeRegistry::Entry > >::const_iterator > >;
19
20template < class ReturnType >
23 if constexpr ( std::is_same < ReturnType, core::normalizationResult < ReturnType > >::value ) {
25 } else {
27 return abstraction::NormalizeRegistry::registerNormalize < ReturnType > ( );
28 }, [ ] ( std::list < std::unique_ptr < abstraction::NormalizeRegistry::Entry > >::const_iterator iter ) {
29 abstraction::NormalizeRegistry::unregisterNormalize < ReturnType > ( iter );
30 } );
31 }
32 }
33public:
34 explicit NormalizationRegisterImpl ( ) : NormalizationRegisterImplBase < ReturnType > ( setup ( ) ) {
35 }
36};
37
38template < class ReturnType >
39using NormalizationRegister = std::conditional_t < core::has_eval < core::normalize < ReturnType > >::value, NormalizationRegisterImpl < ReturnType >, NormalizationRegisterEmpty >;
40
41} /* namespace registration */
42
Definition: registration.hpp:31
Definition: NormalizationRegistration.hpp:14
Definition: NormalizationRegistration.hpp:21
NormalizationRegisterImpl()
Definition: NormalizationRegistration.hpp:34
Definition: AlgoRegistration.hpp:14
std::conditional_t< std::is_same< ReturnType, core::normalizationResult< ReturnType > >::value, NormalizationRegisterEmpty, ext::Register< std::list< std::unique_ptr< abstraction::NormalizeRegistry::Entry > >::const_iterator > > NormalizationRegisterImplBase
Definition: NormalizationRegistration.hpp:18
std::conditional_t< core::has_eval< core::normalize< ReturnType > >::value, NormalizationRegisterImpl< ReturnType >, NormalizationRegisterEmpty > NormalizationRegister
Definition: NormalizationRegistration.hpp:39