from li_boost_shared_ptr_director import * class Derived(Base): def __init__(self, flag): self.return_none = flag Base.__init__(self) def ret_c_shared_ptr(self): if self.return_none: return None else: return C() def ret_c_by_value(self): return C() def take_c_by_value(self,c): return c.get_m() def take_c_by_ref(self,c): return c.get_m() def take_c_by_pointer(self,c): if c: return c.get_m() else: return -2 def take_c_by_pointer_ref(self,c): if c: return c.get_m() else: return -3 def take_c_shared_ptr_by_value(self,c): if c: return c.get_m() else: return -4 def take_c_shared_ptr_by_ref(self,c): if c: return c.get_m() else: return -5 def take_c_shared_ptr_by_pointer(self,c): if c: return c.get_m() else: return -6 def take_c_shared_ptr_by_pointer_ref(self,c): if c: return c.get_m() else: return -7 a = Derived(False) b = Derived(True) assert call_ret_c_shared_ptr(a) == 1 assert call_ret_c_shared_ptr(b) == -1 assert call_ret_c_by_value(a) == 1 assert call_take_c_by_value(a) == 5 assert call_take_c_by_ref(a) == 6 assert call_take_c_by_pointer(a) == 7 assert call_take_c_by_pointer_ref(a) == 8 assert call_take_c_shared_ptr_by_value(a) == 9 assert call_take_c_shared_ptr_by_ref(a) == 10 assert call_take_c_shared_ptr_by_pointer(a) == 11 assert call_take_c_shared_ptr_by_pointer_ref(a) == 12 assert call_take_c_by_pointer_with_null(a) == -2 assert call_take_c_by_pointer_ref_with_null(a) == -3 assert call_take_c_shared_ptr_by_value_with_null(a) == -4 assert call_take_c_shared_ptr_by_ref_with_null(a) == -5 assert call_take_c_shared_ptr_by_pointer_with_null(a) == -6 assert call_take_c_shared_ptr_by_pointer_ref_with_null(a) == -7