aboutsummaryrefslogtreecommitdiff
path: root/Examples/test-suite/ruby/cpp17_director_string_view_runme.rb
diff options
context:
space:
mode:
Diffstat (limited to 'Examples/test-suite/ruby/cpp17_director_string_view_runme.rb')
-rw-r--r--Examples/test-suite/ruby/cpp17_director_string_view_runme.rb42
1 files changed, 42 insertions, 0 deletions
diff --git a/Examples/test-suite/ruby/cpp17_director_string_view_runme.rb b/Examples/test-suite/ruby/cpp17_director_string_view_runme.rb
new file mode 100644
index 000000000..911d9f70d
--- /dev/null
+++ b/Examples/test-suite/ruby/cpp17_director_string_view_runme.rb
@@ -0,0 +1,42 @@
+#!/usr/bin/env ruby
+#
+# Put description here
+#
+#
+#
+#
+#
+
+require 'swig_assert'
+
+require 'cpp17_director_string_view'
+
+class B < Cpp17_director_string_view::A
+ attr_accessor :smem
+
+ def initialize(some_string)
+ super(some_string)
+ end
+
+ def get_first()
+ # Since std::string_view contains a pointer into a string, the string
+ # cannot be a temporary in order to avoid undefined behaviour.
+ @cached_string = super() + " world!"
+ return @cached_string
+ end
+
+ def process_text(string)
+ super(string)
+ @smem = "hello"
+ end
+
+end
+
+
+b = B.new("hello")
+raise RuntimeError if b.get(0) != "hello"
+raise RuntimeError if b.get_first() != "hello world!"
+raise RuntimeError if b.call_get_first() != "hello world!"
+
+b.call_process_func()
+raise RuntimeError if b.smem != "hello"