]> git.lyx.org Git - lyx.git/blob - src/support/block.h
make doc++ able to generate the source documentation for lyx
[lyx.git] / src / support / block.h
1 // -*- C++ -*-
2
3 #ifndef BLOCK_H
4 #define BLOCK_H
5
6 #include "LAssert.h"
7
8 ///
9 template <class T, size_t s>
10 class block {
11 public:
12         ///
13         typedef T value_type;
14         ///
15         typedef size_t size_type;
16         ///
17         typedef T * pointer;
18         ///
19         typedef T const * const_pointer;
20         ///
21         typedef T & reference;
22         ///
23         typedef T const & const_reference;
24         ///
25         typedef T * iterator;
26         ///
27         typedef T const * const_iterator;
28         ///
29         size_type size() const { return s; }
30         ///
31         reference at(int i) {
32                 Assert(i >= 0 && i < s);
33                 return arr[i];
34         }
35         ///
36         const_reference at(int i) const {
37                 Assert(i >= 0 && i < s);
38                 return arr[i];
39         }
40         ///
41         reference operator[](int i) { return arr[i]; }
42         ///
43         const_reference operator[](int i) const { return arr[i]; }
44         ///
45         void operator=(block const & b) {
46                 Assert(b.size() == size());
47                 for (size_t i = 0; i < size(); ++i) {
48                         arr[i] == b[i];
49                 }
50         }
51         ///
52         bool operator==(block const & b) const {
53                 Assert(b.size() == size());
54                 for (size_t i = 0; i < size(); ++i) {
55                         if (arr[i] != b[i]) return false;
56                 }
57                 return true;
58         }
59         ///
60         iterator begin() { return arr[0]; }
61         ///
62         iterator end() { return arr[s]; }
63         ///
64         const_iterator begin() const { return arr[0]; }
65         ///
66         const_iterator end() const { return arr[s]; }
67 private:
68         ///
69         T arr[s];
70 };
71
72 #endif // BLOCK_H_