Skip to content

Commit f555502

Browse files
committed
Added const variants.
1 parent 4b4baca commit f555502

File tree

4 files changed

+38
-17
lines changed

4 files changed

+38
-17
lines changed

README.org

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
* Library Information
66
- Name :: Vector
7-
- Version :: 1.0.1
7+
- Version :: 1.1.0
88
- License :: BSD
99
- URL :: https://github.com/janelia-arduino/Vector
1010
- Author :: Peter Polidoro

library.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
name=Vector
2-
version=1.0.1
2+
version=1.1.0
33
author=Peter Polidoro <peterpolidoro@gmail.com>
44
maintainer=Peter Polidoro <peterpolidoro@gmail.com>
55
sentence=An array container similar to the C++ std::vector

src/Vector.h

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -24,8 +24,10 @@ class Vector
2424
template <size_t MAX_SIZE>
2525
void setStorage(T (&values)[MAX_SIZE], size_t size=0);
2626
void setStorage(T * values, size_t max_size, size_t size);
27-
T & operator[](const size_t index);
28-
T & at(const size_t index);
27+
const T & operator[](size_t index) const;
28+
T & operator[](size_t index);
29+
const T & at(size_t index) const;
30+
T & at(size_t index);
2931
T & front();
3032
T & back();
3133
void clear();
@@ -34,20 +36,21 @@ class Vector
3436
template <typename U, size_t N>
3537
void fill(const U (&values)[N]);
3638
template <typename U>
37-
void fill(Vector<U> & values);
39+
void fill(const Vector<U> & values);
3840
template <typename U>
39-
void assign(const size_t n, const U & value);
41+
void assign(size_t n, const U & value);
4042
template <typename U, size_t N>
41-
void assign(const size_t n, const U (&values)[N]);
43+
void assign(size_t n, const U (&values)[N]);
4244
template <typename U>
43-
void assign(const size_t n, Vector<U> & values);
45+
void assign(size_t n, const Vector<U> & values);
4446
void push_back(const T & value);
4547
void pop_back();
46-
void remove(const size_t index);
48+
void remove(size_t index);
4749
size_t size() const;
4850
size_t max_size() const;
4951
bool empty() const;
5052
bool full() const;
53+
const T * data() const;
5154
T * data();
5255

5356
private:
@@ -57,7 +60,7 @@ class Vector
5760
};
5861

5962
template <typename T>
60-
inline Print & operator <<(Print & stream, Vector<T> & vector)
63+
inline Print & operator <<(Print & stream, const Vector<T> & vector)
6164
{
6265
stream.print("[");
6366
for (size_t i=0; i<vector.size(); ++i)

src/Vector/VectorDefinitions.h

Lines changed: 25 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -45,13 +45,25 @@ void Vector<T>::setStorage(T * values, size_t max_size, size_t size)
4545
}
4646

4747
template <typename T>
48-
T & Vector<T>::operator[](const size_t index)
48+
const T & Vector<T>::operator[](size_t index) const
4949
{
5050
return values_[index];
5151
}
5252

5353
template <typename T>
54-
T & Vector<T>::at(const size_t index)
54+
T & Vector<T>::operator[](size_t index)
55+
{
56+
return values_[index];
57+
}
58+
59+
template <typename T>
60+
T & Vector<T>::at(size_t index)
61+
{
62+
return values_[index];
63+
}
64+
65+
template <typename T>
66+
const T & Vector<T>::at(size_t index) const
5567
{
5668
return values_[index];
5769
}
@@ -90,14 +102,14 @@ void Vector<T>::fill(const U (&values)[N])
90102

91103
template <typename T>
92104
template <typename U>
93-
void Vector<T>::fill(Vector<U> & values)
105+
void Vector<T>::fill(const Vector<U> & values)
94106
{
95107
assign(values.size(),values);
96108
}
97109

98110
template <typename T>
99111
template <typename U>
100-
void Vector<T>::assign(const size_t n, const U & value)
112+
void Vector<T>::assign(size_t n, const U & value)
101113
{
102114
size_t assign_size = ((n < max_size_) ? n : max_size_);
103115
size_ = assign_size;
@@ -109,7 +121,7 @@ void Vector<T>::assign(const size_t n, const U & value)
109121

110122
template <typename T>
111123
template <typename U, size_t N>
112-
void Vector<T>::assign(const size_t n, const U (&values)[N])
124+
void Vector<T>::assign(size_t n, const U (&values)[N])
113125
{
114126
size_t n_smallest = ((n < N) ? n : N);
115127
size_t assign_size = ((n_smallest < max_size_) ? n_smallest : max_size_);
@@ -122,7 +134,7 @@ void Vector<T>::assign(const size_t n, const U (&values)[N])
122134

123135
template <typename T>
124136
template <typename U>
125-
void Vector<T>::assign(const size_t n, Vector<U> & values)
137+
void Vector<T>::assign(size_t n, const Vector<U> & values)
126138
{
127139
size_t n_smallest = ((n < values.size()) ? n : values.size());
128140
size_t assign_size = ((n_smallest < max_size_) ? n_smallest : max_size_);
@@ -152,7 +164,7 @@ void Vector<T>::pop_back()
152164
}
153165

154166
template <typename T>
155-
void Vector<T>::remove(const size_t index)
167+
void Vector<T>::remove(size_t index)
156168
{
157169
if (size_ > index)
158170
{
@@ -194,4 +206,10 @@ T * Vector<T>::data()
194206
return values_;
195207
}
196208

209+
template <typename T>
210+
const T * Vector<T>::data() const
211+
{
212+
return values_;
213+
}
214+
197215
#endif

0 commit comments

Comments
 (0)