summaryrefslogtreecommitdiff
path: root/Lib
diff options
context:
space:
mode:
authorWilliam S Fulton <wsf@fultondesigns.co.uk>2016-03-14 20:46:56 +0000
committerWilliam S Fulton <wsf@fultondesigns.co.uk>2016-03-14 20:46:56 +0000
commit870b814f5e5a2801d845b6cf3056b72ba7c6fe13 (patch)
treeefdfff9f7c2ebf0af76ee641ed7dd4ed118557f2 /Lib
parentf11960244770afb3296acb5ad0fe891054deca8f (diff)
downloadswig-870b814f5e5a2801d845b6cf3056b72ba7c6fe13.tar.gz
Add C++11 std::array container support for Java
Diffstat (limited to 'Lib')
-rw-r--r--Lib/java/std_array.i42
1 files changed, 42 insertions, 0 deletions
diff --git a/Lib/java/std_array.i b/Lib/java/std_array.i
new file mode 100644
index 000000000..cbacfe673
--- /dev/null
+++ b/Lib/java/std_array.i
@@ -0,0 +1,42 @@
+/* -----------------------------------------------------------------------------
+ * std_array.i
+ * ----------------------------------------------------------------------------- */
+
+%include <std_common.i>
+
+namespace std {
+
+ template<class T, size_t N> class array {
+ public:
+ typedef T& reference;
+ typedef const T& const_reference;
+ typedef size_t size_type;
+ typedef ptrdiff_t difference_type;
+ typedef T value_type;
+ typedef T* pointer;
+ typedef const T* const_pointer;
+ array();
+ array(const array& other);
+ size_type size() const;
+ %rename(isEmpty) empty;
+ bool empty() const;
+ void fill(const T& u);
+ %extend {
+ const_reference get(int i) throw (std::out_of_range) {
+ int size = int(self->size());
+ if (i>=0 && i<size)
+ return (*self)[i];
+ else
+ throw std::out_of_range("array index out of range");
+ }
+ void set(int i, const value_type& val) throw (std::out_of_range) {
+ int size = int(self->size());
+ if (i>=0 && i<size)
+ (*self)[i] = val;
+ else
+ throw std::out_of_range("array index out of range");
+ }
+ }
+ };
+}
+