diff --git a/headers/flat.hpp/flat_fwd.hpp b/headers/flat.hpp/flat_fwd.hpp new file mode 100644 index 0000000..869022d --- /dev/null +++ b/headers/flat.hpp/flat_fwd.hpp @@ -0,0 +1,44 @@ +/******************************************************************************* + * This file is part of the "https://github.com/blackmatov/flat.hpp" + * For conditions of distribution and use, see copyright notice in LICENSE.md + * Copyright (C) 2019, by Matvey Cherevko (blackmatov@gmail.com) + ******************************************************************************/ + +#pragma once + +#include +#include +#include +#include +#include +#include +#include + +#include "detail/eq_compare.hpp" +#include "detail/pair_compare.hpp" +#include "detail/is_transparent.hpp" + +namespace flat_hpp +{ + template < typename Key + , typename Compare = std::less + , typename Container = std::vector > + class flat_set; + + template < typename Key + , typename Compare = std::less + , typename Container = std::vector > + class flat_multiset; + + template < typename Key + , typename Value + , typename Compare = std::less + , typename Container = std::vector> > + class flat_map; + + template < typename Key + , typename Value + , typename Compare = std::less + , typename Container = std::vector> > + class flat_multimap; +} diff --git a/headers/flat.hpp/flat_map.hpp b/headers/flat.hpp/flat_map.hpp index 0022533..c1a3679 100644 --- a/headers/flat.hpp/flat_map.hpp +++ b/headers/flat.hpp/flat_map.hpp @@ -6,25 +6,14 @@ #pragma once -#include -#include -#include -#include -#include -#include -#include -#include - -#include "detail/eq_compare.hpp" -#include "detail/pair_compare.hpp" -#include "detail/is_transparent.hpp" +#include "flat_fwd.hpp" namespace flat_hpp { template < typename Key , typename Value - , typename Compare = std::less - , typename Container = std::vector> > + , typename Compare + , typename Container > class flat_map : private detail::pair_compare< typename Container::value_type, diff --git a/headers/flat.hpp/flat_multimap.hpp b/headers/flat.hpp/flat_multimap.hpp index 77e0549..65bbc6b 100644 --- a/headers/flat.hpp/flat_multimap.hpp +++ b/headers/flat.hpp/flat_multimap.hpp @@ -6,25 +6,14 @@ #pragma once -#include -#include -#include -#include -#include -#include -#include -#include - -#include "detail/eq_compare.hpp" -#include "detail/pair_compare.hpp" -#include "detail/is_transparent.hpp" +#include "flat_fwd.hpp" namespace flat_hpp { template < typename Key , typename Value - , typename Compare = std::less - , typename Container = std::vector> > + , typename Compare + , typename Container > class flat_multimap : private detail::pair_compare< typename Container::value_type, diff --git a/headers/flat.hpp/flat_multiset.hpp b/headers/flat.hpp/flat_multiset.hpp index 577b9d0..2ecc8df 100644 --- a/headers/flat.hpp/flat_multiset.hpp +++ b/headers/flat.hpp/flat_multiset.hpp @@ -6,23 +6,13 @@ #pragma once -#include -#include -#include -#include -#include -#include -#include -#include - -#include "detail/eq_compare.hpp" -#include "detail/is_transparent.hpp" +#include "flat_fwd.hpp" namespace flat_hpp { template < typename Key - , typename Compare = std::less - , typename Container = std::vector > + , typename Compare + , typename Container > class flat_multiset : private Compare { using base_type = Compare; public: diff --git a/headers/flat.hpp/flat_set.hpp b/headers/flat.hpp/flat_set.hpp index 7d0f27c..132ac9e 100644 --- a/headers/flat.hpp/flat_set.hpp +++ b/headers/flat.hpp/flat_set.hpp @@ -6,23 +6,13 @@ #pragma once -#include -#include -#include -#include -#include -#include -#include -#include - -#include "detail/eq_compare.hpp" -#include "detail/is_transparent.hpp" +#include "flat_fwd.hpp" namespace flat_hpp { template < typename Key - , typename Compare = std::less - , typename Container = std::vector > + , typename Compare + , typename Container > class flat_set : private Compare { using base_type = Compare; public: