summaryrefslogtreecommitdiff
path: root/cppe/include/IceE/ScopedArray.h
diff options
context:
space:
mode:
authorMark Spruiell <mes@zeroc.com>2006-08-29 13:54:07 +0000
committerMark Spruiell <mes@zeroc.com>2006-08-29 13:54:07 +0000
commit8fb05461c77dd82e4ce019d25a438678d14bda0b (patch)
treef73ce4f04dfdbc23a63ebd4440bf472c66dd55a6 /cppe/include/IceE/ScopedArray.h
parentwindows fix for http://bugzilla.zeroc.com/bugzilla/show_bug.cgi?id=1274 (diff)
downloadice-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.h72
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