12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485 |
- #ifndef __AI_BOOST_SCOPED_ARRAY_INCLUDED
- #define __AI_BOOST_SCOPED_ARRAY_INCLUDED
- #ifndef BOOST_SCOPED_ARRAY_HPP_INCLUDED
- #include <assert.h>
- namespace boost {
- // small replacement for boost::scoped_array
- template <class T>
- class scoped_array
- {
- public:
- // provide a default construtctor
- scoped_array()
- : ptr(0)
- {
- }
- // construction from an existing heap object of type T
- scoped_array(T* _ptr)
- : ptr(_ptr)
- {
- }
-
- // automatic destruction of the wrapped object at the
- // end of our lifetime
- ~scoped_array()
- {
- delete[] ptr;
- }
-
- inline T* get()
- {
- return ptr;
- }
-
- inline operator T*()
- {
- return ptr;
- }
-
- inline T* operator-> ()
- {
- return ptr;
- }
- inline void reset (T* t = 0)
- {
- delete[] ptr;
- ptr = t;
- }
- T & operator[](std::ptrdiff_t i) const
- {
- return ptr[i];
- }
- void swap(scoped_array & b)
- {
- std::swap(ptr, b.ptr);
- }
-
- private:
-
- // encapsulated object pointer
- T* ptr;
- };
- template<class T>
- inline void swap(scoped_array<T> & a, scoped_array<T> & b)
- {
- a.swap(b);
- }
- } // end of namespace boost
- #else
- # error "scoped_array.h was already included"
- #endif
- #endif // __AI_BOOST_SCOPED_ARRAY_INCLUDED
|