diff options
author | William S Fulton <wsf@fultondesigns.co.uk> | 2016-03-14 20:46:56 +0000 |
---|---|---|
committer | William S Fulton <wsf@fultondesigns.co.uk> | 2016-03-14 20:46:56 +0000 |
commit | 870b814f5e5a2801d845b6cf3056b72ba7c6fe13 (patch) | |
tree | efdfff9f7c2ebf0af76ee641ed7dd4ed118557f2 /Lib | |
parent | f11960244770afb3296acb5ad0fe891054deca8f (diff) | |
download | swig-870b814f5e5a2801d845b6cf3056b72ba7c6fe13.tar.gz |
Add C++11 std::array container support for Java
Diffstat (limited to 'Lib')
-rw-r--r-- | Lib/java/std_array.i | 42 |
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"); + } + } + }; +} + |