summaryrefslogtreecommitdiff
path: root/share/swig/2.0.11/ruby/std_vectora.i
diff options
context:
space:
mode:
Diffstat (limited to 'share/swig/2.0.11/ruby/std_vectora.i')
-rw-r--r--share/swig/2.0.11/ruby/std_vectora.i36
1 files changed, 36 insertions, 0 deletions
diff --git a/share/swig/2.0.11/ruby/std_vectora.i b/share/swig/2.0.11/ruby/std_vectora.i
new file mode 100644
index 0000000..1708361
--- /dev/null
+++ b/share/swig/2.0.11/ruby/std_vectora.i
@@ -0,0 +1,36 @@
+/*
+ Vectors + allocators
+*/
+
+%fragment("StdVectorATraits","header",fragment="StdSequenceTraits")
+%{
+ namespace swig {
+ template <class T, class A>
+ struct traits_asptr<std::vector<T,A> > {
+ typedef std::vector<T,A> vector_type;
+ typedef T value_type;
+ static int asptr(VALUE obj, vector_type **vec) {
+ return traits_asptr_stdseq<vector_type>::asptr(obj, vec);
+ }
+ };
+
+ template <class T, class A>
+ struct traits_from<std::vector<T,A> > {
+ typedef std::vector<T,A> vector_type;
+ static VALUE from(const vector_type& vec) {
+ return traits_from_stdseq<vector_type>::from(vec);
+ }
+ };
+ }
+%}
+
+
+#define %swig_vector_methods(Type...) %swig_sequence_methods(Type)
+#define %swig_vector_methods_val(Type...) %swig_sequence_methods_val(Type);
+
+%mixin std::vector "Enumerable";
+%ignore std::vector::push_back;
+%ignore std::vector::pop_back;
+%alias std::vector::push "<<";
+
+%include <std/std_vectora.i>