diff options
| author | Magnus Auvinen <magnus.auvinen@gmail.com> | 2010-05-29 07:25:38 +0000 |
|---|---|---|
| committer | Magnus Auvinen <magnus.auvinen@gmail.com> | 2010-05-29 07:25:38 +0000 |
| commit | 72c06a258940696093f255fb1061beb58e1cdd0b (patch) | |
| tree | 36b9a7712eec2d4f07837eab9c38ef1c5af85319 /src/base/tl/sorted_array.h | |
| parent | e56feb597bc743677633432f77513b02907fd169 (diff) | |
| download | zcatch-72c06a258940696093f255fb1061beb58e1cdd0b.tar.gz zcatch-72c06a258940696093f255fb1061beb58e1cdd0b.zip | |
copied refactor to trunk
Diffstat (limited to 'src/base/tl/sorted_array.h')
| -rw-r--r-- | src/base/tl/sorted_array.h | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/src/base/tl/sorted_array.h b/src/base/tl/sorted_array.h new file mode 100644 index 00000000..95f06157 --- /dev/null +++ b/src/base/tl/sorted_array.h @@ -0,0 +1,31 @@ +#ifndef TL_FILE_SORTED_ARRAY_HPP +#define TL_FILE_SORTED_ARRAY_HPP + +#include "algorithm.h" +#include "array.h" + +template <class T, class ALLOCATOR = allocator_default<T> > +class sorted_array : public array<T, ALLOCATOR> +{ + typedef array<T, ALLOCATOR> parent; + + // insert and size is not allowed + int insert(const T& item, typename parent::range r) { dbg_break(); return 0; } + int set_size(int new_size) { dbg_break(); return 0; } + +public: + typedef plain_range_sorted<T> range; + + int add(const T& item) + { + return parent::insert(item, partition_binary(all(), item)); + } + + /* + Function: all + Returns a sorted range that contains the whole array. + */ + range all() { return range(parent::list, parent::list+parent::num_elements); } +}; + +#endif // TL_FILE_SORTED_ARRAY_HPP |