MemoryBlock.h++
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023 #ifndef __ccxx_MemoryBlock_hxx
00024 #define __ccxx_MemoryBlock_hxx
00025
00026 #include <commonc++/Common.h++>
00027 #include <commonc++/OutOfBoundsException.h++>
00028
00029 namespace ccxx {
00030
00037 class COMMONCPP_API MemoryBlock
00038 {
00039 public:
00040
00046 MemoryBlock(byte_t *base = NULL, size_t size = 0) throw()
00047 : _base(base),
00048 _size(size)
00049 { }
00050
00052 virtual ~MemoryBlock() throw()
00053 { }
00054
00056 inline void zero() throw()
00057 { fill(0); }
00058
00060 void fill(byte_t value) throw();
00061
00063 inline byte_t *getBase() throw()
00064 { return(_base); }
00065
00067 inline const byte_t *getBase() const throw()
00068 { return(_base); }
00069
00071 virtual inline void setBase(byte_t *base) throw()
00072 { _base = base; }
00073
00075 inline size_t getSize() const throw()
00076 { return(_size); }
00077
00079 inline void setSize(size_t size) throw()
00080 { _size = size; }
00081
00083 bool operator==(const MemoryBlock& other) const throw();
00084
00086 inline bool operator!=(const MemoryBlock& other) const throw()
00087 { return(! operator==(other)); }
00088
00090 byte_t operator[](int index) const throw(OutOfBoundsException);
00091
00093 byte_t& operator[](int index) throw(OutOfBoundsException);
00094
00103 bool copyFrom(const MemoryBlock& other) throw();
00104
00113 void moveFrom(MemoryBlock& other) throw();
00114
00122 int indexOf(byte_t val, uint_t startIndex = 0) const throw();
00123
00125 inline bool operator!() const throw()
00126 { return(_base == NULL); }
00127
00128 protected:
00129
00131 byte_t *_base;
00133 size_t _size;
00134
00135 private:
00136
00137 CCXX_COPY_DECLS(MemoryBlock);
00138 };
00139
00140 };
00141
00142 #endif // __ccxx_MemoryBlock_hxx
00143
00144