Joedb 9.5.0
The Journal-Only Embedded Database
Loading...
Searching...
No Matches
Span.h
Go to the documentation of this file.
1#ifndef joedb_Span_declared
2#define joedb_Span_declared
3
5
6#include <stddef.h>
7
8namespace joedb
9{
10 /// @ingroup joedb
11 template<typename T> class Span
12 {
13 private:
14 T *p;
15 size_t size;
16
17 public:
18 Span(T *p, size_t size): p(p), size(size)
19 {
20 }
21
22 T &operator[](size_t i)
23 {
24 JOEDB_DEBUG_ASSERT(i < size);
25 return p[i];
26 }
27
28 const T &operator[](size_t i) const
29 {
30 JOEDB_DEBUG_ASSERT(i < size);
31 return p[i];
32 }
33
34 size_t get_size() const
35 {
36 return size;
37 }
38
39 T *begin()
40 {
41 return p;
42 }
43
44 T *end()
45 {
46 return p + size;
47 }
48
49 const T *begin() const
50 {
51 return p;
52 }
53
54 const T *end() const
55 {
56 return p + size;
57 }
58 };
59}
60
61#endif
T & operator[](size_t i)
Definition Span.h:22
T * end()
Definition Span.h:44
size_t get_size() const
Definition Span.h:34
const T * end() const
Definition Span.h:54
const T * begin() const
Definition Span.h:49
Span(T *p, size_t size)
Definition Span.h:18
T * begin()
Definition Span.h:39
const T & operator[](size_t i) const
Definition Span.h:28
#define JOEDB_DEBUG_ASSERT(x)
Definition assert.h:20
Definition Blob.h:7