From 81e417174198461747851cc69cc260c8f4a25ec6 Mon Sep 17 00:00:00 2001 From: Logan Johnson Date: Fri, 8 Aug 2003 22:15:51 +0000 Subject: [PATCH] Updated one of the example programs (under operator overloading) to make use of the newer (standard) STL library modules for SWIG. git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk@4987 626c5289-ae23-0410-ae9c-e8d60b6d4f22 --- SWIG/Doc/Manual/Ruby.html | 103 +++++++++++--------------------------- 1 file changed, 30 insertions(+), 73 deletions(-) diff --git a/SWIG/Doc/Manual/Ruby.html b/SWIG/Doc/Manual/Ruby.html index 83b419bf9..1a9c1ff17 100644 --- a/SWIG/Doc/Manual/Ruby.html +++ b/SWIG/Doc/Manual/Ruby.html @@ -2421,61 +2421,18 @@ STL vector class:

-%module Example
+%module example
 
 %{
-#include <vector>
 #include <string>
-
-using namespace std;
+#include <vector>
 %}
 
-%typemap (in) string {
-  Check_Type($input, T_STRING);
-  $1 = string(STR2CSTR($input));
-}
-
-%typemap (out) string {
-  if ($1.c_str() == NULL)
-    $result = Qnil;
-  else
-    $result = rb_str_new2($1.c_str());
-}
-
-template<class T> class vector {
-public:
-  %rename(__getitem__) operator[](int);
-  void push_back(T);
-  int size();
-  T operator[](int);
-
-  %extend {
-    void __setitem__(int index, T value) {
-      (*self)[index]=value;
-    }
-  }
-};
-
-%template(StringVector) vector <string>;
-%template(IntVector) vector <int>;
-
-%extend IntVector {
-  void each () {
-    IntVector::iterator i1 = self->begin();
-    IntVector::iterator i1end = self->end();
-    for ( ; i1!=i1end; i1++) 
-      rb_yield(INT2NUM(*i1));
-  }
-}
-%extend StringVector {
-  void each () {
-    StringVector::iterator i1 = self->begin();
-    StringVector::iterator i1end = self->end();
-    for ( ; i1!=i1end; i1++) 
-      rb_yield(rb_str_new2((*i1).c_str()));
-  }
-}
+%include std_string.i
+%include std_vector.i
 
+%template(StringVector) std::vector<string>;
+%template(IntVector)    std::vector<int>;
 

@@ -2483,37 +2440,37 @@ An IRB session using this extension might go like this:

 $ irb
 irb(main):001:0> require 'Example'
-true
-irb(main):002:0> Example::IntVector.new
-#
-irb(main):003:0> i_list.push_back(1)
-nil
-irb(main):004:0> i_list.push_back(2)
-nil
+=> true
+irb(main):002:0> i_list = Example::IntVector.new
+=> #<Example::IntVector:0x2ab9a18>
+irb(main):003:0> i_list.push(1)
+=> nil
+irb(main):004:0> i_list.push(2)
+=> nil
 irb(main):005:0> i_list.each { |i| puts i }
 1
 2
-nil
-irb(main):006:0> "size = #{i_list.size}"
-"size = 2"
+=> nil
+irb(main):006:0> i_list.length
+=> 2
 irb(main):007:0> s_list = Example::StringVector.new
-#
-irb(main):008:0> s_list.push_back("Hello")
-nil
-irb(main):009:0> s_list.push_back("There")
-nil
+=> #<Example::IntVector:0x2aa9c98>
+irb(main):008:0> s_list.push("Hello")
+=> nil
+irb(main):009:0> s_list.push("There")
+=> nil
 irb(main):010:0> s_list.each { |s| puts s }
 Hello
 There
-nil
-irb(main):011:0> "size = #{s_list.size}"
-"size = 2"
-irb(main):012:0> "s_list[0] = #{s_list[0]}"
-"s_list[0] = Hello"
-irb(main):013:0> s_list[0] = "New entry"
-nil
-irb(main):014:0> puts "s_list[0] = #{s_list[0]}"
-"s_list[0] = New Entry"
+=> nil
+irb(main):011:0> s_list.length
+=> 2
+irb(main):012:0> s_list[0]
+=> "Hello"
+irb(main):013:0> s_list[0] = "New Entry"
+=> "New Entry"
+irb(main):014:0> s_list[0]
+=> "New Entry"