Furrent
policy.hpp
Go to the documentation of this file.
1 
12 #pragma once
13 
14 #include <list>
15 
16 namespace fur::policy {
17 
18 template <typename T>
19 class IPolicy {
20  public:
22  using Iterator = typename std::list<T>::iterator;
23 
29  virtual Iterator extract(Iterator begin, Iterator end) const = 0;
30 };
31 
33 template <typename T>
34 class FIFOPolicy : public IPolicy<T> {
35  public:
36  using typename IPolicy<T>::Iterator;
37  Iterator extract(Iterator begin, Iterator end) const override;
38 };
39 
41 template <typename T>
42 class LIFOPolicy : public IPolicy<T> {
43  public:
44  using typename IPolicy<T>::Iterator;
45  Iterator extract(Iterator begin, Iterator end) const override;
46 };
47 
48 } // namespace fur::policy
49 
50 #include <policy/policy.inl>
fur::policy::LIFOPolicy::extract
Iterator extract(Iterator begin, Iterator end) const override
implements the custom policy logic to extract an element from the list
Definition: policy.inl:6
fur::policy::LIFOPolicy
Simple LIFO policy.
Definition: policy.hpp:42
fur::policy::FIFOPolicy
Simple FIFO policy.
Definition: policy.hpp:34
fur::policy::IPolicy::extract
virtual Iterator extract(Iterator begin, Iterator end) const =0
implements the custom policy logic to extract an element from the list
fur::policy
Definition: policy.hpp:16
policy.inl
fur::policy::IPolicy::Iterator
typename std::list< T >::iterator Iterator
Iterator type used by the std::list type.
Definition: policy.hpp:22
fur::policy::FIFOPolicy::extract
Iterator extract(Iterator begin, Iterator end) const override
implements the custom policy logic to extract an element from the list
Definition: policy.inl:11
fur::policy::IPolicy
Definition: policy.hpp:19