summaryrefslogtreecommitdiff
path: root/src/array_fun.h
diff options
context:
space:
mode:
authorTatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>2009-02-07 11:00:34 +0000
committerTatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>2009-02-07 11:00:34 +0000
commit2881dbe025d2002fc5260969cd0c402404713ebc (patch)
tree4d30de40e909a9c9e9f3d2bdb0ad2748afc35922 /src/array_fun.h
parentbbb3589293139db527cf72f0a30e989fc2889a53 (diff)
2009-02-07 Tatsuhiro Tsujikawa <t-tujikawa@users.sourceforge.net>
Added OptionParser::parseArg() which internally uses getopt_long to parse command-line options. All command-line options are now configured by OptionHandler. No manual editing of struct option* is required any more. * src/NameMatchOptionHandler.h * src/OptionHandler.h * src/OptionHandlerFactory.cc * src/OptionHandlerImpl.h * src/OptionParser.cc * src/OptionParser.h * src/array_fun.h * src/main.cc * src/option_processing.cc * test/OptionHandlerTest.cc * test/OptionParserTest.cc
Diffstat (limited to 'src/array_fun.h')
-rw-r--r--src/array_fun.h37
1 files changed, 37 insertions, 0 deletions
diff --git a/src/array_fun.h b/src/array_fun.h
index ccf837a0..0c2327f4 100644
--- a/src/array_fun.h
+++ b/src/array_fun.h
@@ -215,6 +215,43 @@ size_t arrayLength(T (&a)[0u])
return 0;
}
+template<typename T>
+class array_ptr {
+private:
+ T* _array;
+
+ // Copies are not allowed. Let's make them private.
+ array_ptr(const array_ptr& s);
+
+ template<typename S>
+ array_ptr(const array_ptr<S>& s);
+
+ array_ptr& operator=(const array_ptr& s);
+
+ template<typename S>
+ array_ptr& operator=(const array_ptr<S>& s);
+
+public:
+ array_ptr():_array(0) {}
+
+ explicit array_ptr(T* array):_array(array) {}
+
+ ~array_ptr()
+ {
+ delete [] _array;
+ }
+
+ T& operator[](size_t index)
+ {
+ return _array[index];
+ }
+
+ const T& operator[](size_t index) const
+ {
+ return _array[index];
+ }
+};
+
} // namespace aria2
#endif // _D_ARRAY_FUN_H_