Joedb 9.1.4
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 ////////////////////////////////////////////////////////////////////////////
11 template<typename T> class Span
12 ////////////////////////////////////////////////////////////////////////////
13 {
14 private:
15 T *p;
16 size_t size;
17
18 public:
19 Span(T *p, size_t size): p(p), size(size)
20 {
21 }
22
23 T &operator[](size_t i)
24 {
25 JOEDB_ASSERT(i < size);
26 return p[i];
27 }
28
29 const T &operator[](size_t i) const
30 {
31 JOEDB_ASSERT(i < size);
32 return p[i];
33 }
34
35 size_t get_size() const
36 {
37 return size;
38 }
39
40 T *begin()
41 {
42 return p;
43 }
44
45 T *end()
46 {
47 return p + size;
48 }
49
50 const T *begin() const
51 {
52 return p;
53 }
54
55 const T *end() const
56 {
57 return p + size;
58 }
59 };
60}
61
62#endif
T & operator[](size_t i)
Definition Span.h:23
T * end()
Definition Span.h:45
size_t get_size() const
Definition Span.h:35
const T * end() const
Definition Span.h:55
const T * begin() const
Definition Span.h:50
Span(T *p, size_t size)
Definition Span.h:19
T * begin()
Definition Span.h:40
const T & operator[](size_t i) const
Definition Span.h:29
#define JOEDB_ASSERT(x)
Definition assert.h:18
Definition Blob.h:7