Stroika Library 3.0d16
 
Loading...
Searching...
No Matches
SortedMultiSet_Factory.inl
1/*
2 * Copyright(c) Sophist Solutions, Inc. 1990-2025. All rights reserved
3 */
5
7 template <typename T, typename TRAITS>
8 class SortedMultiSet_stdmap; // avoid issue with #include deadly embrace
9}
10namespace Stroika::Foundation::Containers::Factory {
11
12 /*
13 ********************************************************************************
14 *************** SortedMultiSet_Factory<T, TRAITS, COMPARER> ********************
15 ********************************************************************************
16 */
17 template <typename T, typename TRAITS, ITotallyOrderingComparer<T> COMPARER>
18 constexpr SortedMultiSet_Factory<T, TRAITS, COMPARER>::SortedMultiSet_Factory (const FactoryFunctionType& f)
19 : fFactory_{f}
20 {
21 }
22 template <typename T, typename TRAITS, ITotallyOrderingComparer<T> COMPARER>
27 template <typename T, typename TRAITS, ITotallyOrderingComparer<T> COMPARER>
28 constexpr SortedMultiSet_Factory<T, TRAITS, COMPARER>::SortedMultiSet_Factory ([[maybe_unused]] const Hints& hints)
29 : SortedMultiSet_Factory{[] () -> FactoryFunctionType {
30 return [] (const COMPARER& comparer) {
33 }
34 else {
35 return Concrete::SortedMultiSet_stdmap<T, TRAITS>{Common::InOrderComparerAdapter<T, COMPARER>{comparer}};
36 }
37 };
38 }()}
39 {
40 }
41 template <typename T, typename TRAITS, ITotallyOrderingComparer<T> COMPARER>
43 {
44 return AccessDefault_ ();
45 }
46 template <typename T, typename TRAITS, ITotallyOrderingComparer<T> COMPARER>
48 {
49 return this->fFactory_ (comparer);
50 }
51 template <typename T, typename TRAITS, ITotallyOrderingComparer<T> COMPARER>
52 void SortedMultiSet_Factory<T, TRAITS, COMPARER>::Register (const optional<SortedMultiSet_Factory>& f)
53 {
54 AccessDefault_ () = f.has_value () ? *f : SortedMultiSet_Factory{Hints{}};
55 }
56 template <typename T, typename TRAITS, ITotallyOrderingComparer<T> COMPARER>
58 {
59 static SortedMultiSet_Factory sDefault_{Hints{}};
60 return sDefault_;
61 }
62
63}
Singleton factory object - Used to create the default backend implementation of a SortedMultiSet<> co...
Use this to wrap any basic comparer, and produce a Less comparer.
Definition Compare.h:386