F´ Flight Software - C/C++ Documentation
A framework for building embedded system applications to NASA flight quality standards.
ArraySet.hpp
Go to the documentation of this file.
1 // ======================================================================
2 // \file ArraySet.hpp
3 // \author bocchino
4 // \brief An array-based set with internal storage
5 // ======================================================================
6 
7 #ifndef Fw_ArraySet_HPP
8 #define Fw_ArraySet_HPP
9 
11 
12 namespace Fw {
13 
14 template <typename T, FwSizeType C>
15 class ArraySet final : public SetBase<T> {
16  // ----------------------------------------------------------------------
17  // Static assertions
18  // ----------------------------------------------------------------------
19 
20  static_assert(C > 0, "capacity must be greater than zero");
21 
22  // ----------------------------------------------------------------------
23  // Friend class for testing
24  // ----------------------------------------------------------------------
25 
26  template <typename TT, FwSizeType CC>
27  friend class ArraySetTester;
28 
29  public:
30  // ----------------------------------------------------------------------
31  // Public types
32  // ----------------------------------------------------------------------
33 
36 
39 
41  using Entries = Entry[C];
42 
43  public:
44  // ----------------------------------------------------------------------
45  // Public constructors and destructors
46  // ----------------------------------------------------------------------
47 
49  ArraySet() : SetBase<T>(), m_extSet(m_entries, C) {}
50 
52  ArraySet(const ArraySet<T, C>& set) : SetBase<T>(), m_extSet(m_entries, C) { *this = set; }
53 
55  ~ArraySet() override = default;
56 
57  public:
58  // ----------------------------------------------------------------------
59  // Public member functions
60  // ----------------------------------------------------------------------
61 
64  this->m_extSet.copyDataFrom(set);
65  return *this;
66  }
67 
70  ConstIterator begin() const override { return this->m_extSet.begin(); }
71 
73  void clear() override { this->m_extSet.clear(); }
74 
77  ConstIterator end() const override { return this->m_extSet.end(); }
78 
81  Success find(const T& element
82  ) const override {
83  return this->m_extSet.find(element);
84  }
85 
88  FwSizeType getCapacity() const override { return this->m_extSet.getCapacity(); }
89 
92  FwSizeType getSize() const override { return this->m_extSet.getSize(); }
93 
96  Success insert(const T& element
97  ) override {
98  return this->m_extSet.insert(element);
99  }
100 
103  Success remove(const T& element
104  ) override {
105  return this->m_extSet.remove(element);
106  }
107 
108  private:
109  // ----------------------------------------------------------------------
110  // Private member variables
111  // ----------------------------------------------------------------------
112 
114  ExternalArraySet<T> m_extSet = {};
115 
117  Entries m_entries = {};
118 };
119 
120 } // namespace Fw
121 
122 #endif
PlatformSizeType FwSizeType
ArraySet< T, C > & operator=(const ArraySet< T, C > &set)
operator=
Definition: ArraySet.hpp:63
ConstIterator begin() const override
Definition: ArraySet.hpp:70
Entry[C] Entries
The type of the implementation entries.
Definition: ArraySet.hpp:41
~ArraySet() override=default
Destructor.
void clear() override
Clear the set.
Definition: ArraySet.hpp:73
ConstIterator end() const override
Definition: ArraySet.hpp:77
Success find(const T &element) const override
Definition: ArraySet.hpp:81
ArraySet(const ArraySet< T, C > &set)
Copy constructor.
Definition: ArraySet.hpp:52
ArraySet()
Zero-argument constructor.
Definition: ArraySet.hpp:49
FwSizeType getCapacity() const override
Definition: ArraySet.hpp:88
Success insert(const T &element) override
Definition: ArraySet.hpp:96
friend class ArraySetTester
Definition: ArraySet.hpp:20
FwSizeType getSize() const override
Definition: ArraySet.hpp:92
Success/Failure.