Skip to content

Commit 4340819

Browse files
committed
Cleanup + fixes for containers.h.
1 parent 495d623 commit 4340819

1 file changed

Lines changed: 10 additions & 52 deletions

File tree

include/react/common/Containers.h

Lines changed: 10 additions & 52 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,6 @@
1212
#include <array>
1313
#include <vector>
1414

15-
#include <boost/circular_buffer.hpp>
16-
1715
/***************************************/ REACT_IMPL_BEGIN /**************************************/
1816

1917
///////////////////////////////////////////////////////////////////////////////////////////////////
@@ -50,58 +48,10 @@ class NodeVector
5048
};
5149

5250
///////////////////////////////////////////////////////////////////////////////////////////////////
53-
/// NodeStack
51+
/// NodeBuffer
5452
///////////////////////////////////////////////////////////////////////////////////////////////////
5553
struct SplitTag {};
5654

57-
template <typename T, int N>
58-
class NodeStack
59-
{
60-
public:
61-
using DataT = std::array<T*,N>;
62-
using iterator = typename DataT::iterator;
63-
using const_iterator = typename DataT::const_iterator;
64-
65-
static const int split_size = N / 2;
66-
67-
NodeStack() :
68-
cursor_{ nodes_.begin() }
69-
{}
70-
71-
template <typename TInput>
72-
NodeStack(TInput srcBegin, TInput srcEnd) :
73-
cursor_{ nodes_.begin() + std::distance(srcBegin, srcEnd) }
74-
{
75-
std::copy(srcBegin, srcEnd, nodes_.begin());
76-
}
77-
78-
// Other must be full
79-
NodeStack(NodeStack& other, SplitTag) :
80-
cursor_{ nodes_.begin() + split_size }
81-
{
82-
std::copy(other.nodes_.begin() + split_size, other.nodes_.end(), nodes_.begin());
83-
other.cursor_ = other.nodes_.begin() + split_size;
84-
}
85-
86-
void Push(T* e) { *cursor_ = e; ++cursor_; }
87-
T* Pop() { --cursor_; return *cursor_; }
88-
89-
bool IsFull() const { return cursor_ == nodes_.end(); }
90-
bool IsEmpty() const { return cursor_ == nodes_.begin(); }
91-
92-
iterator begin() { return nodes_.begin(); }
93-
const_iterator begin() const { return nodes_.begin(); }
94-
iterator end() { return cursor_; }
95-
const_iterator end() const { return cursor_; }
96-
97-
private:
98-
DataT nodes_;
99-
iterator cursor_;
100-
};
101-
102-
///////////////////////////////////////////////////////////////////////////////////////////////////
103-
/// NodeBuffer
104-
///////////////////////////////////////////////////////////////////////////////////////////////////
10555
template <typename T, int N>
10656
class NodeBuffer
10757
{
@@ -118,11 +68,19 @@ class NodeBuffer
11868
back_{ nodes_.begin() }
11969
{}
12070

71+
NodeBuffer(T* node) :
72+
size_{ 1 },
73+
front_{ nodes_.begin() },
74+
back_{ nodes_.begin() + 1 }
75+
{
76+
nodes_[0] = node;
77+
}
78+
12179
template <typename TInput>
12280
NodeBuffer(TInput srcBegin, TInput srcEnd) :
12381
size_{ std::distance(srcBegin, srcEnd) },
12482
front_{ nodes_.begin() },
125-
back_{ nodes_.begin() + size_}
83+
back_{ size_ != N ? nodes_.begin() + size_ : nodes_.begin() }
12684
{
12785
std::copy(srcBegin, srcEnd, front_);
12886
}

0 commit comments

Comments
 (0)