ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/deliantra/dclient/include/adt/slice.h
(Generate patch)

Comparing deliantra/dclient/include/adt/slice.h (file contents):
Revision 1.1 by sf-pippijn, Sun Oct 17 08:14:45 2010 UTC vs.
Revision 1.2 by sf-pippijn, Wed Oct 20 08:33:39 2010 UTC

1#pragma once 1#pragma once
2 2
3template<typename Container> 3template<typename Container>
4struct container_slice 4struct slice_view
5{ 5{
6 typedef Container container_type; 6 typedef Container container_type;
7 7
8 typedef typename container_type::const_iterator const_iterator; 8 typedef typename container_type::const_iterator const_iterator;
9 typedef typename container_type::iterator iterator; 9 typedef typename container_type::iterator iterator;
10 10
11 typedef typename container_type::const_reverse_iterator const_reverse_iterator;
12 typedef typename container_type::reverse_iterator reverse_iterator;
13
11 container_slice (Container const &container, size_t offset) 14 slice_view (Container const &container, size_t offset)
12 : container (container) 15 : container (container)
13 , offset (offset) 16 , offset (offset)
14 { 17 {
15 if (container.size () < offset) 18 if (container.size () < offset)
16 throw "slice out of bounds"; 19 throw "slice out of bounds";
19 } 22 }
20 23
21 const_iterator begin () const { return container.begin () + offset; } 24 const_iterator begin () const { return container.begin () + offset; }
22 const_iterator end () const { return container.end (); } 25 const_iterator end () const { return container.end (); }
23 26
27 const_reverse_iterator rbegin () const { return container.rbegin () + offset; }
28 const_reverse_iterator rend () const { return container.rend (); }
29
24private: 30private:
25 container_type const &container; 31 container_type const &container;
26 size_t offset; 32 size_t offset;
27}; 33};
28 34
29template<typename Container> 35template<typename Container>
30container_slice<Container> 36slice_view<Container>
31slice (Container const &container, size_t offset) 37slice (Container const &container, size_t offset)
32{ 38{
33 return container_slice<Container> (container, offset); 39 return slice_view<Container> (container, offset);
34} 40}

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines