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