diff options
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.rb | 42 |
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" |