00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017 #ifndef __SAFERANGE_H__
00018 #define __SAFERANGE_H__
00019
00020 namespace oasys {
00021
00027 template<typename _Type>
00028 class SafeRange {
00029 public:
00034 struct Error {
00035 Error(size_t offset) : offset_(offset) {}
00036 size_t offset_;
00037 };
00038
00039 SafeRange(_Type* a, size_t size)
00040 : array_(a), size_(size) {}
00041
00042 _Type& operator[](size_t offset) {
00043 if (offset >= size_) {
00044 throw Error(offset);
00045 }
00046
00047 return array_[offset];
00048 }
00049
00050 private:
00051 _Type* array_;
00052 size_t size_;
00053 };
00054
00055 }
00056
00057 #endif