diff options
author | Mark Spruiell <mes@zeroc.com> | 2006-08-29 13:54:07 +0000 |
---|---|---|
committer | Mark Spruiell <mes@zeroc.com> | 2006-08-29 13:54:07 +0000 |
commit | 8fb05461c77dd82e4ce019d25a438678d14bda0b (patch) | |
tree | f73ce4f04dfdbc23a63ebd4440bf472c66dd55a6 /cppe/include/IceE/ScopedArray.h | |
parent | windows fix for http://bugzilla.zeroc.com/bugzilla/show_bug.cgi?id=1274 (diff) | |
download | ice-8fb05461c77dd82e4ce019d25a438678d14bda0b.tar.bz2 ice-8fb05461c77dd82e4ce019d25a438678d14bda0b.tar.xz ice-8fb05461c77dd82e4ce019d25a438678d14bda0b.zip |
bug 1316: rename auto_array to ScopedArray
Diffstat (limited to 'cppe/include/IceE/ScopedArray.h')
-rw-r--r-- | cppe/include/IceE/ScopedArray.h | 72 |
1 files changed, 72 insertions, 0 deletions
diff --git a/cppe/include/IceE/ScopedArray.h b/cppe/include/IceE/ScopedArray.h new file mode 100644 index 00000000000..7d41ab6238c --- /dev/null +++ b/cppe/include/IceE/ScopedArray.h @@ -0,0 +1,72 @@ +// ********************************************************************** +// +// Copyright (c) 2003-2006 ZeroC, Inc. All rights reserved. +// +// This copy of Ice is licensed to you under the terms described in the +// ICE_LICENSE file included in this distribution. +// +// ********************************************************************** + +#ifndef ICEE_SCOPED_ARRAY_H +#define ICEE_SCOPED_ARRAY_H + +#include <IceE/Config.h> + +namespace IceUtil +{ + +template<typename T> +class ScopedArray : private noncopyable +{ +public: + + explicit ScopedArray(T* ptr = 0) : + _ptr(ptr) + { + } + + ~ScopedArray() + { + if(_ptr != 0) + { + delete[] _ptr; + } + } + + void reset(T* ptr = 0) + { + assert(ptr == 0 || ptr != _ptr); + if(_ptr != 0) + { + delete[] _ptr; + } + _ptr = ptr; + } + + T& operator[](size_t i) const + { + assert(_ptr != 0); + assert(i >= 0); + return _ptr[i]; + } + + T* get() const + { + return _ptr; + } + + void swap(ScopedArray& a) + { + T* tmp = a._ptr; + a._ptr = _ptr; + _ptr = tmp; + } + +private: + + T* _ptr; +}; + +} // End of namespace IceUtil + +#endif |