You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
54 lines
1.6 KiB
54 lines
1.6 KiB
/* ----------------------------------------------------------------------------- |
|
* See the LICENSE file for information on copyright, usage and redistribution |
|
* of SWIG, and the README file for authors - http://www.swig.org/release.html. |
|
* |
|
* 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"); |
|
} |
|
} |
|
}; |
|
} |
|
|
|
%define specialize_std_vector(T) |
|
#warning "specialize_std_vector - specialization for type T no longer needed" |
|
%enddef |
|
|
|
|