Line data Source code
1 : //
2 : // Author: Vladimir Migashko <migashko@gmail.com>, (C) 2012
3 : //
4 : // Copyright: See COPYING file that comes with this distribution
5 : //
6 :
7 : #ifndef VSET_VSET_BUFFER_PERSISTENT_HEAD_HPP
8 : #define VSET_VSET_BUFFER_PERSISTENT_HEAD_HPP
9 :
10 : #include <cstddef>
11 :
12 : namespace vset { namespace buffer{ namespace persistent{
13 :
14 : template< size_t ID >
15 : struct head
16 : {
17 :
18 : private:
19 : size_t _format;
20 : size_t _offset;
21 : size_t _size;
22 : size_t _capacity;
23 :
24 : public:
25 :
26 : size_t format() const { return _format; }
27 2846229 : size_t offset() const { return _offset; }
28 67 : size_t size() const { return _size; }
29 30 : size_t capacity() const { return _capacity; }
30 4 : void reset()
31 : {
32 4 : _size = 0;
33 4 : _capacity=0;
34 4 : }
35 :
36 29 : void set_size(size_t s) { _size = s; }
37 31 : void set_capacity(size_t c) { _capacity = c; }
38 :
39 17 : head()
40 : : _format(ID)
41 : , _offset( sizeof(head<ID>) )
42 : , _size(0)
43 17 : , _capacity(0)
44 17 : {}
45 : };
46 :
47 : struct empty_head
48 : {
49 : public:
50 : static size_t format() { return 0; }
51 : static size_t offset() { return 0; }
52 : static size_t size() { return 0; }
53 : static size_t capacity() { return 0; }
54 :
55 : static void set_size(size_t ) { }
56 : static void set_capacity(size_t ) { }
57 : };
58 :
59 :
60 : }}}
61 :
62 : #endif
|