aboutsummaryrefslogtreecommitdiff
path: root/Examples/test-suite/ruby/cpp17_director_string_view_runme.rb
blob: 911d9f70d53f6690b9dbac9ae03dd323395f9b64 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
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"