def test_calldef_free_functions(self): ns = self.global_ns.namespace('calldef') no_return_no_args = ns.free_function('no_return_no_args') self._test_calldef_return_type(no_return_no_args, declarations.void_t) # TODO: gccxml reported no_return_no_args as having an extern # qualifier, which is wrong; Keep the test like this for gccxml as # gccxml will be dropped one day. With castxml check if function has # no extern qualifier. if self.xml_generator_from_xml_file.is_gccxml: self.assertTrue( no_return_no_args.has_extern, "function 'no_return_no_args' should have an extern qualifier") else: self.assertTrue( not no_return_no_args.has_extern, "function 'no_return_no_args' should have an extern qualifier") # Static_call is explicetely defined as extern, this works with gccxml # and castxml. static_call = ns.free_function('static_call') self.assertTrue( static_call, "function 'no_return_no_args' should have an extern qualifier") return_no_args = ns.free_function('return_no_args') self._test_calldef_return_type(return_no_args, declarations.int_t) # from now there is no need to check return type. no_return_1_arg = ns.free_function(name='no_return_1_arg') self.assertTrue(no_return_1_arg, "unable to find 'no_return_1_arg' function") self.assertTrue(no_return_1_arg.arguments[0].name in ['arg', 'arg0']) self._test_calldef_args(no_return_1_arg, [ declarations.argument_t(name=no_return_1_arg.arguments[0].name, decl_type=declarations.int_t()) ]) return_default_args = ns.free_function('return_default_args') self.assertTrue( return_default_args.arguments[0].name in ['arg', 'arg0']) self.assertTrue( return_default_args.arguments[1].name in ['arg1', 'flag']) self._test_calldef_args(return_default_args, [ declarations.argument_t(name=return_default_args.arguments[0].name, decl_type=declarations.int_t(), default_value='1'), declarations.argument_t(name=return_default_args.arguments[1].name, decl_type=declarations.bool_t(), default_value='false') ]) self._test_calldef_exceptions(return_default_args, []) calldef_with_throw = ns.free_function('calldef_with_throw') self.assertTrue(calldef_with_throw, "unable to find 'calldef_with_throw' function") self._test_calldef_exceptions( calldef_with_throw, ['some_exception_t', 'other_exception_t'])
def test_calldef_free_functions(self): ns = self.global_ns.namespace('calldef') no_return_no_args = ns.free_function('no_return_no_args') self._test_calldef_return_type(no_return_no_args, declarations.void_t) self.failUnless( no_return_no_args.has_extern, "function 'no_return_no_args' should have extern qualifier") return_no_args = ns.free_function('return_no_args') self._test_calldef_return_type(return_no_args, declarations.int_t) # from now there is no need to check return type. no_return_1_arg = ns.free_function(name='no_return_1_arg') self.failUnless( no_return_1_arg, "unable to find 'no_return_1_arg' function") self.failUnless(no_return_1_arg.arguments[0].name in ['arg', 'arg0']) self._test_calldef_args( no_return_1_arg, [declarations.argument_t( name=no_return_1_arg.arguments[0].name, type=declarations.int_t())]) return_default_args = ns.free_function('return_default_args') self.failUnless( return_default_args.arguments[0].name in [ 'arg', 'arg0']) self.failUnless( return_default_args.arguments[1].name in [ 'arg1', 'flag']) self._test_calldef_args( return_default_args, [declarations.argument_t( name=return_default_args.arguments[0].name, type=declarations.int_t(), default_value='1'), declarations.argument_t( name=return_default_args.arguments[1].name, type=declarations.bool_t(), default_value='false')]) self._test_calldef_exceptions(return_default_args, []) calldef_with_throw = ns.free_function('calldef_with_throw') self.failUnless( calldef_with_throw, "unable to find 'calldef_with_throw' function") self._test_calldef_exceptions( calldef_with_throw, [ 'some_exception_t', 'other_exception_t'])
def test_calldef_free_functions(self): ns = self.global_ns.namespace('calldef') no_return_no_args = ns.free_function('no_return_no_args') self._test_calldef_return_type(no_return_no_args, declarations.void_t) self.assertTrue( not no_return_no_args.has_extern, "function 'no_return_no_args' should have an extern qualifier") # Static_call is explicetely defined as extern, this works with gccxml # and castxml. static_call = ns.free_function('static_call') self.assertTrue( static_call, "function 'no_return_no_args' should have an extern qualifier") return_no_args = ns.free_function('return_no_args') self._test_calldef_return_type(return_no_args, declarations.int_t) # from now there is no need to check return type. no_return_1_arg = ns.free_function(name='no_return_1_arg') self.assertTrue(no_return_1_arg, "unable to find 'no_return_1_arg' function") self.assertTrue(no_return_1_arg.arguments[0].name in ['arg', 'arg0']) self._test_calldef_args(no_return_1_arg, [ declarations.argument_t(name=no_return_1_arg.arguments[0].name, decl_type=declarations.int_t()) ]) return_default_args = ns.free_function('return_default_args') self.assertTrue( return_default_args.arguments[0].name in ['arg', 'arg0']) self.assertTrue( return_default_args.arguments[1].name in ['arg1', 'flag']) self._test_calldef_args(return_default_args, [ declarations.argument_t(name=return_default_args.arguments[0].name, decl_type=declarations.int_t(), default_value='1'), declarations.argument_t(name=return_default_args.arguments[1].name, decl_type=declarations.bool_t(), default_value='false') ]) self._test_calldef_exceptions(return_default_args, []) calldef_with_throw = ns.free_function('calldef_with_throw') self.assertTrue(calldef_with_throw, "unable to find 'calldef_with_throw' function") self._test_calldef_exceptions( calldef_with_throw, ['some_exception_t', 'other_exception_t'])
def test_calldef_member_functions(self): struct_calldefs = self.global_ns.class_('calldefs_t') member_inline_call = struct_calldefs.member_function( 'member_inline_call') self._test_calldef_args( member_inline_call, [ declarations.argument_t( name='i', type=declarations.int_t())]) member_const_call = struct_calldefs.member_function( 'member_const_call') self.failUnless( member_const_call.has_const, "function 'member_const_call' should have const qualifier") self.failUnless( member_const_call.virtuality == declarations.VIRTUALITY_TYPES.NOT_VIRTUAL, "function 'member_const_call' should be non virtual function") member_virtual_call = struct_calldefs.member_function( name='member_virtual_call') self.failUnless( member_virtual_call.virtuality == declarations.VIRTUALITY_TYPES.VIRTUAL, "function 'member_virtual_call' should be virtual function") member_pure_virtual_call = struct_calldefs.member_function( 'member_pure_virtual_call') self.failUnless( member_pure_virtual_call.virtuality == declarations.VIRTUALITY_TYPES.PURE_VIRTUAL, ("function 'member_pure_virtual_call' should be pure virtual " + "function")) static_call = struct_calldefs.member_function('static_call') self.failUnless( static_call.has_static, "function 'static_call' should have static qualifier")
def test_calldef_member_functions(self): struct_calldefs = self.global_ns.class_('calldefs_t') member_inline_call = struct_calldefs.member_function( 'member_inline_call') self._test_calldef_args( member_inline_call, [ declarations.argument_t( name='i', decl_type=declarations.int_t())]) member_const_call = struct_calldefs.member_function( 'member_const_call') self.assertTrue( member_const_call.has_const, "function 'member_const_call' should have const qualifier") self.assertTrue( member_const_call.virtuality == declarations.VIRTUALITY_TYPES.NOT_VIRTUAL, "function 'member_const_call' should be non virtual function") member_virtual_call = struct_calldefs.member_function( name='member_virtual_call') self.assertTrue( member_virtual_call.virtuality == declarations.VIRTUALITY_TYPES.VIRTUAL, "function 'member_virtual_call' should be virtual function") member_pure_virtual_call = struct_calldefs.member_function( 'member_pure_virtual_call') self.assertTrue( member_pure_virtual_call.virtuality == declarations.VIRTUALITY_TYPES.PURE_VIRTUAL, ("function 'member_pure_virtual_call' should be pure virtual " + "function")) static_call = struct_calldefs.member_function('static_call') self.assertTrue( static_call.has_static, "function 'static_call' should have static qualifier")
def ParseImageClasses(self, mb): # IBorder cls = mb.class_('IBorder') cls.include() cls.mem_funs('ApplySchemeSettings').include() cls.mem_funs('Paint').virtuality = 'pure virtual' cls.mem_funs('ApplySchemeSettings').virtuality = 'pure virtual' # IImage cls = mb.class_('IImage') cls.include() cls.mem_funs( 'GetContentSize' ).add_transformation( FT.output('wide'), FT.output('tall') ) cls.mem_funs( 'GetSize' ).add_transformation( FT.output('wide'), FT.output('tall') ) cls.mem_funs('Paint').virtuality = 'pure virtual' # Image cls = mb.class_('Image') cls.include() #cls.mem_funs( matchers.access_type_matcher_t( 'protected' ) ).exclude() cls.no_init = True #cls.calldefs().virtuality = 'not virtual' cls.calldefs('Image').exclude() cls.mem_funs( 'Paint' ).exclude() cls.add_wrapper_code( 'virtual void Paint() {}' ) # Stub for wrapper class. Otherwise it will complain. cls.mem_funs( 'GetSize' ).add_transformation( FT.output('wide'), FT.output('tall') ) cls.mem_funs( 'GetContentSize' ).add_transformation( FT.output('wide'), FT.output('tall') ) # FIXME: Py++ is giving problems on some functions cls.mem_funs('SetPos').virtuality = 'not virtual' #cls.mem_funs('GetPos').virtuality = 'not virtual' #cls.mem_funs('GetSize').virtuality = 'not virtual' #cls.mem_funs('GetContentSize').virtuality = 'not virtual' cls.mem_funs('SetColor').virtuality = 'not virtual' cls.mem_funs('SetBkColor').virtuality = 'not virtual' cls.mem_funs('GetColor').virtuality = 'not virtual' cls.mem_funs('SetSize').virtuality = 'not virtual' cls.mem_funs('DrawSetColor').virtuality = 'not virtual' cls.mem_funs('DrawSetColor').virtuality = 'not virtual' cls.mem_funs('DrawFilledRect').virtuality = 'not virtual' cls.mem_funs('DrawOutlinedRect').virtuality = 'not virtual' cls.mem_funs('DrawLine').virtuality = 'not virtual' cls.mem_funs('DrawPolyLine').virtuality = 'not virtual' cls.mem_funs('DrawSetTextFont').virtuality = 'not virtual' cls.mem_funs('DrawSetTextColor').virtuality = 'not virtual' cls.mem_funs('DrawSetTextPos').virtuality = 'not virtual' cls.mem_funs('DrawPrintText').virtuality = 'not virtual' cls.mem_funs('DrawPrintText').virtuality = 'not virtual' cls.mem_funs('DrawPrintChar').virtuality = 'not virtual' cls.mem_funs('DrawPrintChar').virtuality = 'not virtual' cls.mem_funs('DrawSetTexture').virtuality = 'not virtual' cls.mem_funs('DrawTexturedRect').virtuality = 'not virtual' # TextImage cls = mb.class_('TextImage') cls.include() cls.calldefs().virtuality = 'not virtual' cls.mem_funs( matchers.access_type_matcher_t( 'protected' ) ).exclude() #cls.calldefs('SetText', calldef_withtypes([pointer_t(const_t(declarated_t(wchar_t())))])).exclude() cls.mem_funs( 'GetContentSize' ).add_transformation( FT.output('wide'), FT.output('tall') ) cls.mem_funs( 'GetDrawWidth' ).add_transformation( FT.output('width') ) cls.mem_funs( 'SizeText' ).exclude() # DECLARATION ONLY cls.mem_funs('GetText').exclude() cls.add_wrapper_code( 'boost::python::object GetText() {\r\n' + \ ' char buf[1025];\r\n' + \ ' TextImage::GetText(buf, 1025);\r\n' + \ ' return boost::python::object(buf);\r\n' + \ '}' ) cls.add_registration_code( 'def( \r\n' + \ ' "GetText"\r\n' + \ ' , (boost::python::object ( TextImage_wrapper::* )())( &TextImage_wrapper::GetText ) )' ) # BitmapImage cls = mb.class_('BitmapImage') cls.include() cls.calldefs().virtuality = 'not virtual' if self.settings.branch == 'source2013': cls.mem_fun('SetBitmap').exclude() #cls.mem_funs( matchers.access_type_matcher_t( 'protected' ) ).exclude() cls.calldefs('GetColor', calldef_withtypes([reference_t(declarated_t(int_t()))])).add_transformation(FT.output('r'), FT.output('g'), FT.output('b'), FT.output('a')) cls.mem_funs( 'GetSize' ).add_transformation( FT.output('wide'), FT.output('tall') ) # CAvatarImage cls = mb.class_('CAvatarImage') cls.include() cls.calldefs().virtuality = 'not virtual' cls.mem_funs( matchers.access_type_matcher_t( 'protected' ) ).exclude() cls.rename('AvatarImage') cls.mem_funs( 'GetSize' ).add_transformation( FT.output('wide'), FT.output('tall') ) cls.mem_funs( 'GetContentSize' ).add_transformation( FT.output('wide'), FT.output('tall') ) cls.mem_funs( 'InitFromRGBA' ).exclude() mb.enum('EAvatarSize').include()
def test_calldef_free_functions(self): ns = self.global_ns.namespace('calldef') no_return_no_args = ns.free_function('no_return_no_args') self._test_calldef_return_type(no_return_no_args, declarations.void_t) # TODO: gccxml reported no_return_no_args as having an extern # qualifier, which is wrong; Keep the test like this for gccxml as # gccxml will be dropped one day. With castxml check if function has # no extern qualifier. if 'GCC-XML' in utils.xml_generator: self.failUnless( no_return_no_args.has_extern, "function 'no_return_no_args' should have an extern qualifier") else: self.failUnless( not no_return_no_args.has_extern, "function 'no_return_no_args' should have an extern qualifier") # Static_call is explicetely defined as extern, this works with gccxml # and castxml. static_call = ns.free_function('static_call') self.failUnless( static_call, "function 'no_return_no_args' should have an extern qualifier") return_no_args = ns.free_function('return_no_args') self._test_calldef_return_type(return_no_args, declarations.int_t) # from now there is no need to check return type. no_return_1_arg = ns.free_function(name='no_return_1_arg') self.failUnless( no_return_1_arg, "unable to find 'no_return_1_arg' function") self.failUnless(no_return_1_arg.arguments[0].name in ['arg', 'arg0']) self._test_calldef_args( no_return_1_arg, [declarations.argument_t( name=no_return_1_arg.arguments[0].name, type=declarations.int_t())]) return_default_args = ns.free_function('return_default_args') self.failUnless( return_default_args.arguments[0].name in ['arg', 'arg0']) self.failUnless( return_default_args.arguments[1].name in ['arg1', 'flag']) self._test_calldef_args( return_default_args, [declarations.argument_t( name=return_default_args.arguments[0].name, type=declarations.int_t(), default_value='1'), declarations.argument_t( name=return_default_args.arguments[1].name, type=declarations.bool_t(), default_value='false')]) self._test_calldef_exceptions(return_default_args, []) calldef_with_throw = ns.free_function('calldef_with_throw') self.failUnless( calldef_with_throw, "unable to find 'calldef_with_throw' function") self._test_calldef_exceptions( calldef_with_throw, [ 'some_exception_t', 'other_exception_t'])