| using System; |
| using li_boost_shared_ptr_directorNamespace; |
| |
| public class li_boost_shared_ptr_director_runme { |
| |
| private static void check(int got, int expected) { |
| if (got != expected) |
| throw new Exception("Failed, got: " + got + " expected: " + expected); |
| } |
| |
| public static void Main() { |
| Derived a = new Derived(false); |
| Derived b = new Derived(true); |
| |
| check(li_boost_shared_ptr_director.call_ret_c_shared_ptr(a), 1); |
| check(li_boost_shared_ptr_director.call_ret_c_shared_ptr(b), -1); |
| check(li_boost_shared_ptr_director.call_ret_c_by_value(a), 1); |
| |
| check(li_boost_shared_ptr_director.call_ret_c_shared_ptr(a), 1); |
| check(li_boost_shared_ptr_director.call_ret_c_shared_ptr(b), -1); |
| check(li_boost_shared_ptr_director.call_ret_c_by_value(a), 1); |
| |
| check(li_boost_shared_ptr_director.call_take_c_by_value(a), 5); |
| check(li_boost_shared_ptr_director.call_take_c_by_ref(a), 6); |
| check(li_boost_shared_ptr_director.call_take_c_by_pointer(a), 7); |
| check(li_boost_shared_ptr_director.call_take_c_by_pointer_ref(a), 8); |
| check(li_boost_shared_ptr_director.call_take_c_shared_ptr_by_value(a), 9); |
| check(li_boost_shared_ptr_director.call_take_c_shared_ptr_by_ref(a), 10); |
| check(li_boost_shared_ptr_director.call_take_c_shared_ptr_by_pointer(a), 11); |
| check(li_boost_shared_ptr_director.call_take_c_shared_ptr_by_pointer_ref(a), 12); |
| |
| check(li_boost_shared_ptr_director.call_take_c_by_pointer_with_null(a), -2); |
| check(li_boost_shared_ptr_director.call_take_c_by_pointer_ref_with_null(a), -3); |
| check(li_boost_shared_ptr_director.call_take_c_shared_ptr_by_value_with_null(a), -4); |
| check(li_boost_shared_ptr_director.call_take_c_shared_ptr_by_ref_with_null(a), -5); |
| check(li_boost_shared_ptr_director.call_take_c_shared_ptr_by_pointer_with_null(a), -6); |
| check(li_boost_shared_ptr_director.call_take_c_shared_ptr_by_pointer_ref_with_null(a), -7); |
| } |
| |
| } |
| |
| class Derived : Base { |
| |
| private bool return_none; |
| |
| public Derived(bool flag) : base() { |
| this.return_none = flag; |
| } |
| |
| public override C ret_c_shared_ptr() { |
| if (this.return_none) |
| return null; |
| else |
| return new C(); |
| } |
| |
| public override C ret_c_by_value() { |
| return new C(); |
| } |
| |
| public override int take_c_by_value(C c) { |
| return c.get_m(); |
| } |
| |
| public override int take_c_by_ref(C c) { |
| return c.get_m(); |
| } |
| |
| public override int take_c_by_pointer(C c) { |
| if (c != null) |
| return c.get_m(); |
| else |
| return -2; |
| } |
| |
| public override int take_c_by_pointer_ref(C c) { |
| if (c != null) |
| return c.get_m(); |
| else |
| return -3; |
| } |
| |
| public override int take_c_shared_ptr_by_value(C c) { |
| if (c != null) |
| return c.get_m(); |
| else |
| return -4; |
| } |
| |
| public override int take_c_shared_ptr_by_ref(C c) { |
| if (c != null) |
| return c.get_m(); |
| else |
| return -5; |
| } |
| |
| public override int take_c_shared_ptr_by_pointer(C c) { |
| if (c != null) |
| return c.get_m(); |
| else |
| return -6; |
| } |
| |
| public override int take_c_shared_ptr_by_pointer_ref(C c) { |
| if (c != null) |
| return c.get_m(); |
| else |
| return -7; |
| } |
| |
| } |