/trunk/Lib/java/std_vector.i
Swig | 85 lines | 75 code | 7 blank | 3 comment | 0 complexity | f9f5bfb0d42fef712631b33f3623ca95 MD5 | raw file
Possible License(s): LGPL-2.1, Cube, GPL-3.0, 0BSD, GPL-2.0
- /* -----------------------------------------------------------------------------
- * std_vector.i
- * ----------------------------------------------------------------------------- */
- %include <std_common.i>
- %{
- #include <vector>
- #include <stdexcept>
- %}
- namespace std {
-
- template<class T> class vector {
- public:
- typedef size_t size_type;
- typedef T value_type;
- typedef const value_type& const_reference;
- vector();
- vector(size_type n);
- size_type size() const;
- size_type capacity() const;
- void reserve(size_type n);
- %rename(isEmpty) empty;
- bool empty() const;
- void clear();
- %rename(add) push_back;
- void push_back(const value_type& x);
- %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("vector 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("vector index out of range");
- }
- }
- };
- // bool specialization
- template<> class vector<bool> {
- public:
- typedef size_t size_type;
- typedef bool value_type;
- typedef bool const_reference;
- vector();
- vector(size_type n);
- size_type size() const;
- size_type capacity() const;
- void reserve(size_type n);
- %rename(isEmpty) empty;
- bool empty() const;
- void clear();
- %rename(add) push_back;
- void push_back(const value_type& x);
- %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("vector 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("vector index out of range");
- }
- }
- };
- }
- %define specialize_std_vector(T)
- #warning "specialize_std_vector - specialization for type T no longer needed"
- %enddef