| package main |
| |
| import ( |
| wrap "swigtests/go_director_inout" |
| ) |
| |
| type GoMyClass struct {} |
| |
| func (p *GoMyClass) Adjust(m map[string]interface{}) wrap.GoRetStruct { |
| s := "" |
| for k, v := range m { |
| s += k + "," + v.(string) + ";" |
| } |
| return wrap.GoRetStruct{s} |
| } |
| |
| func (p *GoMyClass) S1(s string) { |
| if s != "S1" { |
| panic(s) |
| } |
| } |
| |
| func (p *GoMyClass) S2(s *string) { |
| if *s != "S2" { |
| panic(s) |
| } |
| *s = "R2" |
| } |
| |
| func (p *GoMyClass) S3(s *string) { |
| if *s != "S3" { |
| panic(s) |
| } |
| *s = "R3" |
| } |
| |
| func (p *GoMyClass) S4(s []string) { |
| if s[0] != "T1" { |
| panic(s) |
| } |
| if s[1] != "T2" { |
| panic(s) |
| } |
| } |
| |
| func main() { |
| a := wrap.NewDirectorMyClass(&GoMyClass{}) |
| m := map[string]interface{}{ |
| "first": "second", |
| } |
| s := a.Adjust(m) |
| if s.Str != "first,second;" { |
| panic(s) |
| } |
| |
| a.S1("S1") |
| str := "S2" |
| a.S2(&str) |
| if str != "R2" { |
| panic(str) |
| } |
| str = "S3" |
| a.S3(&str) |
| if str != "R3" { |
| panic(str) |
| } |
| |
| a.CallS4([]string{ "T1", "T2" }) |
| |
| a.S5(&str) |
| a.S5(nil) |
| |
| a = wrap.NewDirectorMyClass(nil) |
| s = a.Adjust(m) |
| if s.Str != `{"first":"second"}` { |
| panic(s.Str) |
| } |
| } |