def ParseTextEntry(self, mb): # List of overridables mb.mem_funs('SetText').virtuality = 'virtual' mb.mem_funs('MoveCursor').virtuality = 'virtual' mb.mem_funs('SetDisabledBgColor').virtuality = 'virtual' mb.mem_funs('SetMultiline').virtuality = 'virtual' mb.mem_funs('SetVerticalScrollbar').virtuality = 'virtual' # mb.mem_funs('GetEditMenu').exclude( ) # Exclude for now, add back later when we found out call policies. mb.mem_funs('GetSelectedRange').add_transformation( FT.output('cx0'), FT.output('cx1')) mb.mem_funs('CursorToPixelSpace').add_transformation( FT.inout('cx'), FT.inout('cy')) mb.mem_funs('AddAnotherLine').add_transformation( FT.output('cx'), FT.output('cy')) mb.mem_funs('GetStartDrawIndex').add_transformation( FT.output('lineBreakIndexIndex')) charstrexcludetypes = [pointer_t(const_t(declarated_t(char_t())))] # Wrap GetText manual cls = mb.class_('TextEntry') cls.mem_funs('GetText').exclude() cls.add_wrapper_code( 'boost::python::object GetText() {\r\n' + \ ' const char *buf = (const char *)malloc( (GetTextLength()+1)*sizeof(char) );\r\n' + \ ' TextEntry::GetText((char *)buf, GetTextLength()+1);\r\n' + \ ' boost::python::object rv(buf);\r\n' + \ ' delete buf;\r\n' + \ ' return rv;\r\n' + \ '}' ) cls.add_registration_code( 'def( \r\n' + \ ' "GetText"\r\n' + \ ' , (boost::python::object ( TextEntry_wrapper::* )())( &TextEntry_wrapper::GetText ) )' ) cls.calldefs( name='SetText', function=calldef_withtypes(charstrexcludetypes)).exclude() cls.calldefs( name='InsertString', function=calldef_withtypes(charstrexcludetypes)).exclude() # RichText cls = mb.class_('RichText') cls.calldefs( name='SetText', function=calldef_withtypes(charstrexcludetypes)).exclude() cls.calldefs( name='InsertString', function=calldef_withtypes(charstrexcludetypes)).exclude() if self.settings.branch == 'swarm': mb.mem_funs('GetScrollBar').exclude()
def customize(self, mb): #~ mb.global_ns.exclude() #~ mb.namespace( 'tests' ).include() set_flag = mb.calldefs('set_flag') set_flag.add_transformation(ft.inout(1)) call_set_flag = mb.calldefs('call_set_flag') call_set_flag.add_transformation(ft.inout(2))
def ManualTransformations ( mb ): global_ns = mb.global_ns main_ns = global_ns # global_ns.namespace( ) def create_output( size ): return [ ft.output( i ) for i in range( size ) ] x = main_ns.mem_fun('::Opcode::PlanesCollider::PlanesAABBOverlap') x.add_transformation(ft.output('out_clip_mask')) x.documentation = docit ("","Point center, Point extents, , udword in_clip_mask", "out_clip_mask") x = main_ns.mem_fun('::IceMaths::IndexedTriangle::GetVRefs') x.add_transformation(ft.output('vref0'),ft.output('vref1'),ft.output('vref2')) x.documentation = docit ("","ubyte edgenb", "vref0, vref1, vref2") x = main_ns.mem_fun('::IceCore::Container::FindNext') x.add_transformation(ft.inout('entry')) x.documentation = docit ("","container, entry", "entry, mode") x = main_ns.mem_fun('::IceCore::Container::FindPrev') x.add_transformation(ft.inout('entry')) x.documentation = docit ("","container, entry", "entry, mode") x = main_ns.free_function('::IceCore::Compute3DCoords') x.add_transformation(ft.output('u'),ft.output('v'),ft.output('w')) x.documentation = docit ("","i, nbu, nbu_nbv", "u,v,w") x = main_ns.free_function('::IceCore::Compute2DCoords') x.add_transformation(ft.output('u'),ft.output('v')) x.documentation = docit ("","i, nbu", "u,v") x = main_ns.free_function('::IceCore::Swap') x.add_transformation(ft.inout('x'),ft.inout('y')) x.documentation = docit ("","x,y", "x,y") x = main_ns.free_function('::IceCore::SetLeastNBits') x.add_transformation(ft.inout('x')) x.documentation = docit ("","x, n", "x") x = main_ns.free_function('::IceCore::ZeroLeastSetBit') x.add_transformation(ft.inout('n')) x.documentation = docit ("","n", "n") x = main_ns.free_function('::IceCore::SpreadBits') x.add_transformation(ft.inout('n')) x.documentation = docit ("","n", "n") x = main_ns.free_function('::IceCore::ReverseBits') x.add_transformation(ft.inout('n')) x.documentation = docit ("","n", "n") x = main_ns.mem_fun('::IceMaths::AABB::ComputeOutline') x.add_transformation(ft.inout('num')) x = main_ns.mem_fun('::IceMaths::AABB::ComputeBoxArea') x.add_transformation(ft.inout('num'))
def ParseTextEntry(self, mb): # List of overridables mb.mem_funs('SetText').virtuality = 'virtual' mb.mem_funs('MoveCursor').virtuality = 'virtual' mb.mem_funs('SetDisabledBgColor').virtuality = 'virtual' mb.mem_funs('SetMultiline').virtuality = 'virtual' mb.mem_funs('SetVerticalScrollbar').virtuality = 'virtual' # mb.mem_funs('GetEditMenu').exclude() # Exclude for now, add back later when we found out call policies. mb.mem_funs( 'GetSelectedRange' ).add_transformation( FT.output('cx0'), FT.output('cx1') ) mb.mem_funs( 'CursorToPixelSpace' ).add_transformation( FT.inout('cx'), FT.inout('cy') ) mb.mem_funs( 'AddAnotherLine' ).add_transformation( FT.output('cx'), FT.output('cy') ) mb.mem_funs( 'GetStartDrawIndex' ).add_transformation( FT.output('lineBreakIndexIndex') ) charstrexcludetypes = [pointer_t(const_t(declarated_t(char_t())))] # Wrap GetText manual cls = mb.class_('TextEntry') cls.mem_funs('GetText').exclude() cls.add_wrapper_code( 'boost::python::object GetText() {\r\n' + \ ' const char *buf = (const char *)malloc( (GetTextLength()+1)*sizeof(char) );\r\n' + \ ' TextEntry::GetText((char *)buf, GetTextLength()+1);\r\n' + \ ' boost::python::object rv(buf);\r\n' + \ ' delete buf;\r\n' + \ ' return rv;\r\n' + \ '}' ) cls.add_registration_code( 'def( \r\n' + \ ' "GetText"\r\n' + \ ' , (boost::python::object ( TextEntry_wrapper::* )())( &TextEntry_wrapper::GetText ) )' ) cls.calldefs(name='SetText', function=calldef_withtypes(charstrexcludetypes)).exclude() cls.calldefs(name='InsertString', function=calldef_withtypes(charstrexcludetypes)).exclude() # RichText cls = mb.class_('RichText') cls.calldefs(name='SetText', function=calldef_withtypes(charstrexcludetypes)).exclude() cls.calldefs(name='InsertString', function=calldef_withtypes(charstrexcludetypes)).exclude() if self.settings.branch == 'swarm': mb.mem_funs('GetScrollBar').exclude()
def ParseTextEntry(self, mb): # List of overridables mb.mem_funs('SetText').virtuality = 'virtual' mb.mem_funs('MoveCursor').virtuality = 'virtual' mb.mem_funs('SetDisabledBgColor').virtuality = 'virtual' mb.mem_funs('SetMultiline').virtuality = 'virtual' mb.mem_funs('SetVerticalScrollbar').virtuality = 'virtual' # mb.mem_funs('GetEditMenu').exclude() # Exclude for now, add back later when we found out call policies. mb.mem_funs( 'GetSelectedRange' ).add_transformation( FT.output('cx0'), FT.output('cx1') ) mb.mem_funs( 'CursorToPixelSpace' ).add_transformation( FT.inout('cx'), FT.inout('cy') ) mb.mem_funs( 'AddAnotherLine' ).add_transformation( FT.output('cx'), FT.output('cy') ) mb.mem_funs( 'GetStartDrawIndex' ).add_transformation( FT.output('lineBreakIndexIndex') ) # Wrap GetText manual mb.class_('TextEntry').mem_funs('GetText').exclude() mb.class_('TextEntry').add_wrapper_code( 'boost::python::object GetText() {\r\n' + \ ' const char *buf = (const char *)malloc( (GetTextLength()+1)*sizeof(char) );\r\n' + \ ' TextEntry::GetText((char *)buf, GetTextLength()+1);\r\n' + \ #' ((char *)buf)[GetTextLength()] = \'\\0\';\r\n' + \ ' boost::python::object rv(buf);\r\n' + \ ' delete buf;\r\n' + \ ' return rv;\r\n' + \ '}' ) mb.class_('TextEntry').add_registration_code( 'def( \r\n' + \ ' "GetText"\r\n' + \ ' , (boost::python::object ( TextEntry_wrapper::* )())( &TextEntry_wrapper::GetText ) )' ) # RichText if settings.ASW_CODE_BASE: mb.mem_funs('GetScrollBar').exclude()
def customize( self, mb ): mb.global_ns.calldefs().create_with_signature = True hello_world = mb.free_fun( 'hello_world' ) hello_world.add_transformation( ft.output(0) ) calc = mb.class_('calculator_t' ) assign_funs = calc.mem_funs( lambda decl: decl.name.startswith( 'assign' ) ) assign_funs.add_transformation( ft.output(0), ft.output(1) ) clone_and_assign_5 = calc.mem_fun( 'clone_and_assign_5' ) clone_and_assign_5.add_transformation( ft.output(0) ) clone_and_assign_5.call_policies = call_policies.return_value_policy( call_policies.manage_new_object ) window = mb.class_( 'window_t' ) window.mem_fun( 'resize' ).add_transformation( ft.input(0), ft.input(1) ) window.mem_fun( 'resize_in_out' ).add_transformation( ft.inout(0), ft.inout(1) ) point3d = mb.class_( 'point3d_t' ) point3d.add_wrapper_code( '' ) point3d.mem_fun( 'initialize' ).add_transformation( ft.input_static_array(0, size=3) ) point3d.mem_fun( 'position' ).add_transformation( ft.output_static_array(0, size=3) ) distance = point3d.mem_fun( 'distance' ) distance.add_transformation( ft.output(1) ) distance.transformations[0].controller.add_pre_call_code( '//dddddddddddddd' ) distance.transformations[0].controller.add_post_call_code( '//qqqqqqqqqqqqq' ) image = mb.class_( "image_t" ) image.always_expose_using_scope = True image.member_function( "get_size" ) image.member_function( "get_size" ).add_transformation( ft.output(0), ft.output(1) ) image.member_function( "get_one_value" ).add_transformation( ft.output(0) ) image.member_function( "get_size2" ).add_transformation( ft.output(0), ft.output(1) ) image.member_function( "input_arg" ).add_transformation( ft.input(0) ) image.member_function( "fixed_input_array" ).add_transformation( ft.input_static_array(0,3) ) image.member_function( "fixed_output_array" ).add_transformation( ft.output_static_array(0,3) ) mb.free_function("get_cpp_instance").call_policies \ = call_policies.return_value_policy(call_policies.reference_existing_object) mb.variable( "cpp_instance" ).exclude() cls = mb.class_("no_virtual_members_t") cls.member_function("member").add_transformation( ft.output(0) ) cls = mb.class_("ft_private_destructor_t") cls.member_function("get_value").add_transformation( ft.output(0) ) mb.decls(lambda decl: decl.name.startswith("_")).exclude() cls = mb.class_("bug_render_target_t") cls.mem_fun("get_statistics", arg_types=['float &']*2).add_transformation( ft.output(0), ft.output(1) ) cls = mb.class_( 'modify_type_tester_t' ) do_nothing = cls.mem_fun( 'do_nothing' ) do_nothing.add_transformation( ft.modify_type(0, declarations.remove_reference ) ) clone = cls.mem_fun( 'clone' ) clone.call_policies = call_policies.return_value_policy( call_policies.manage_new_object ) clone.add_transformation( ft.modify_type(0, declarations.remove_reference ) ) cls = mb.class_( 'input_c_buffer_tester_t') write_mf = cls.mem_fun( 'write' ) write_mf.add_transformation( ft.input_c_buffer( 'buffer', 'size' ) ) write_s = cls.mem_fun( 'write_s' ) write_s.add_transformation( ft.input_c_buffer( 'buffer', 'size' ) ) resource = mb.class_( 'resources_t' ) resource.held_type = 'std::auto_ptr< %s >' % resource.decl_string transfer_ownership_tester = mb.class_( 'transfer_ownership_tester_t' ) tester = transfer_ownership_tester.mem_fun( 'tester' ) tester.add_transformation( ft.transfer_ownership( 0 ) ) render_queue_listener_t = mb.class_( 'render_queue_listener_t' ) render_queue_ended = render_queue_listener_t.mem_fun( 'render_queue_ended' ) render_queue_ended.add_transformation( ft.inout(2) ) ft_bugs = mb.namespace( 'ft_bugs' ) h = ft_bugs.mem_fun( 'h' ) h.add_transformation( ft.modify_type(0, remove_const_ref ) ) h.call_policies = call_policies.return_internal_reference() h2 = ft_bugs.mem_fun( 'h2' ) h2.add_transformation( ft.modify_type(0, remove_const_ref ) ) h2.call_policies = call_policies.return_internal_reference() ft_bugs.class_( 'B' ).always_expose_using_scope = True ft_bugs.mem_fun( 'get_a' ).call_policies \ = call_policies.return_value_policy( call_policies.reference_existing_object ) ft_bugs2 = mb.namespace( 'ft_bugs2' ) g = ft_bugs2.mem_fun( 'g' ) g.add_transformation( ft.modify_type(0, remove_const_ref ) ) g.call_policies = call_policies.return_internal_reference()
def customize(self, mb): set_flag = mb.mem_fun('::tests::listener::listen') set_flag.add_transformation(ft.inout(2)) set_flag = mb.mem_fun('::tests::listener::listenPV') set_flag.add_transformation(ft.inout(2))
def Auto_Functional_Transformation ( mb, ignore_funs=[], special_vars=[]): toprocess = [] aliases={} for fun in mb.member_functions(allow_empty=True): toprocess.append( fun ) for fun in mb.free_functions(allow_empty=True): toprocess.append( fun ) for fun in toprocess: fun_demangled = fun.demangled # need to check as extern functions don't have demangled name... if fun_demangled: # try: # ugly wrapping in a try :( fullname = fun.demangled.split('(')[0] if fullname not in ignore_funs and not fun.ignore: outputonly = False arg_position = 0 trans=[] desc="" ft_type = None ctypes_conversion = False for arg in fun.arguments: rawarg = declarations.remove_declarated( declarations.remove_const( declarations.remove_reference( declarations.remove_pointer ( arg.type )))) ## now check if the arg is a fundemental type (int float etc), a void ## or a special .. if declarations.is_arithmetic (rawarg)\ or declarations.is_void(rawarg)\ or arg.type.decl_string in special_vars: if declarations.is_pointer(arg.type): #we convert any pointers to unsigned int's # now look to see if it's a char * and if so we treat it as a string.. # # print "**" , declarations.remove_alias( rawarg ), declarations.type_traits.create_cv_types( declarations.cpptypes.char_t()) if declarations.remove_alias( rawarg ) in declarations.type_traits.create_cv_types( declarations.cpptypes.char_t() ): print ("MATCHED CString", fun) trans.append( ft.input_c_string(arg_position, 4096 ) ) desc = desc +"Argument: "+arg.name+ "( pos:" + str(arg_position) + " - " +\ arg.type.decl_string + " ) takes a python string. \\n" ctypes_conversion = True ctypes_arg = arg.type.decl_string.split()[0] ft_type = 'CTYPES' else: trans.append( ft.modify_type(arg_position,_ReturnUnsignedInt ) ) desc = desc +"Argument: "+arg.name+ "( pos:" + str(arg_position) + " - " +\ arg.type.decl_string + " ) takes a CTypes.addressof(xx). \\n" ctypes_conversion = True ctypes_arg = arg.type.decl_string.split()[0] ft_type = 'CTYPES' elif declarations.is_reference(arg.type)and not declarations.is_const(declarations.remove_reference( arg.type)): # seen functions passing const ref's trans.append( ft.inout(arg_position ) ) desc = desc + "Argument: "+arg.name+ "( pos:" + str(arg_position) + " - " +\ arg.type.decl_string + " ) converted to an input/output (change to return types).\\n" ft_type = 'INOUT' elif declarations.is_reference(arg.type): print ("Warning: - possible code change.", fun,arg," not wrapped as const reference to base type invalid") else: pass # it isn't a pointer or reference so doesn't need wrapping else: pass # it's not a var we need to handle arg_position += 1 if trans: const_return = False # declarations.is_const(fun) if fun.decl_string.endswith('const'): const_return=True simple_return = declarations.is_arithmetic(fun.return_type) or declarations.is_void(fun.return_type) nonpublic_destructor = declarations.is_class(fun.parent) and declarations.has_destructor(fun.parent) and\ not declarations.has_public_destructor(fun.parent) if fun.documentation or fun.transformations: # it's already be tweaked: print ("AUTOFT ERROR: Duplicate Tranforms.", fun, fun.documentation) # if the class has a protected destruction AND the return value is const or a non arithmatic value then exclude it. elif nonpublic_destructor and const_return: print ("AUTOFT ERROR Const: Parent has non public destructor and const return.", fun.parent.name, fun.return_type.decl_string, fun) fun.documentation="Python-Ogre Warning: function required transformation - not possible due to non public destructor and const return value.." elif nonpublic_destructor and not simple_return: print ("AUTOFT ERROR Const: Parent has non public destructor and complex return value.", fun.parent.name, fun.return_type.decl_string, fun) fun.documentation="Python-Ogre Warning: function required transformation - not possible due to non public destructor and complex return value.." else: new_alias = fun.name if ctypes_conversion: # only manage name changes if ctypes changing # now lets look for a duplicate function name with the same number arguments f= [None]*len(fun.arguments) s = mb.member_functions("::" + fullname, arg_types=f, allow_empty=True) if len (s) > 1: # there are duplicate names so need to create something unique ctypes_arg = ctypes_arg.replace("::", "_") # to clean up function names... new_alias = fun.name + ctypes_arg[0].upper() + ctypes_arg[1:] # now for REAL ugly code -- we have faked a new alias and it may not be unique # so we track previous alias + class name to ensure unique names are generated keyname = fullname + new_alias # we use the full class + function name + alias as the key if keyname in aliases: # already exists, need to fake another version.. new_alias = new_alias + "_" + str( aliases[keyname] ) aliases[keyname] = aliases[keyname] + 1 else: aliases[keyname] = 1 desc = desc + "\\\nWARNING FUNCTION NAME CHANGE - from "+fun.name + " -- " + fun.decl_string +" to " + new_alias + " \\n" print ("INFO: Adjusting Alias as multiple overlapping functions:", new_alias) print ("AUTOFT OK: Tranformed ", fun.return_type.decl_string, fun, "(",new_alias,")") fun.add_transformation ( * trans , **{"alias":new_alias} ) fun.documentation = docit ("Auto Modified Arguments:", desc, "...")
def ParsePanel(self, mb): # List of functions that should be overridable mb.mem_funs('SetVisible').virtuality = 'virtual' mb.mem_funs('SetParent').virtuality = 'virtual' mb.mem_funs('SetEnabled').virtuality = 'virtual' mb.mem_funs('SetBgColor').virtuality = 'virtual' mb.mem_funs('SetFgColor').virtuality = 'virtual' mb.mem_funs('SetCursor').virtuality = 'virtual' mb.mem_funs('InvalidateLayout').virtuality = 'virtual' mb.mem_funs('SetBorder').virtuality = 'virtual' mb.mem_funs('SetPaintBorderEnabled').virtuality = 'virtual' mb.mem_funs('SetPaintBackgroundEnabled').virtuality = 'virtual' mb.mem_funs('SetPaintEnabled').virtuality = 'virtual' mb.mem_funs('SetPaintBackgroundType').virtuality = 'virtual' mb.mem_funs('SetScheme').virtuality = 'virtual' mb.mem_funs('ApplySchemeSettings').virtuality = 'virtual' mb.mem_funs('OnCommand').virtuality = 'virtual' mb.mem_funs('OnMouseCaptureLost').virtuality = 'virtual' mb.mem_funs('OnSetFocus').virtuality = 'virtual' mb.mem_funs('OnKillFocus').virtuality = 'virtual' mb.mem_funs('OnDelete').virtuality = 'virtual' mb.mem_funs('OnThink').virtuality = 'virtual' mb.mem_funs('OnChildAdded').virtuality = 'virtual' mb.mem_funs('OnSizeChanged').virtuality = 'virtual' mb.mem_funs('OnTick').virtuality = 'virtual' mb.mem_funs('OnCursorMoved').virtuality = 'virtual' mb.mem_funs('OnCursorEntered').virtuality = 'virtual' mb.mem_funs('OnCursorExited').virtuality = 'virtual' mb.mem_funs('OnMousePressed').virtuality = 'virtual' mb.mem_funs('OnMouseDoublePressed').virtuality = 'virtual' mb.mem_funs('OnMouseReleased').virtuality = 'virtual' mb.mem_funs('OnMouseWheeled').virtuality = 'virtual' mb.mem_funs('OnMouseTriplePressed').virtuality = 'virtual' mb.mem_funs('OnKeyCodePressed').virtuality = 'virtual' mb.mem_funs('OnKeyCodeTyped').virtuality = 'virtual' mb.mem_funs('OnKeyCodeReleased').virtuality = 'virtual' mb.mem_funs('OnKeyFocusTicked').virtuality = 'virtual' mb.mem_funs('OnMouseFocusTicked').virtuality = 'virtual' mb.mem_funs('PaintBackground').virtuality = 'virtual' mb.mem_funs('Paint').virtuality = 'virtual' #mb.mem_funs('PaintBorder').virtuality = 'virtual' # TODO: Don't believe we are ever interested in painting borders in python mb.mem_funs('PaintBuildOverlay').virtuality = 'virtual' mb.mem_funs('PostChildPaint').virtuality = 'virtual' mb.mem_funs('PerformLayout').virtuality = 'virtual' mb.mem_funs('SetMouseInputEnabled').virtuality = 'virtual' mb.mem_funs('SetKeyBoardInputEnabled').virtuality = 'virtual' mb.mem_funs('SetDragEnabled').virtuality = 'virtual' mb.mem_funs('OnRequestFocus').virtuality = 'virtual' mb.mem_funs('OnScreenSizeChanged').virtuality = 'virtual' # Transformations mb.mem_funs( 'GetPos' ).add_transformation( FT.output('x'), FT.output('y') ) mb.class_('Panel').mem_funs( 'GetSize' ).add_transformation( FT.output('wide'), FT.output('tall') ) mb.class_('Panel').mem_funs( 'GetBounds' ).add_transformation( FT.output('x'), FT.output('y'), FT.output('wide'), FT.output('tall') ) mb.mem_funs( 'GetMinimumSize' ).add_transformation( FT.output('wide'), FT.output('tall') ) mb.mem_funs( 'LocalToScreen' ).add_transformation( FT.inout('x'), FT.inout('y') ) mb.mem_funs( 'ScreenToLocal' ).add_transformation( FT.inout('x'), FT.inout('y') ) mb.mem_funs( 'ParentLocalToScreen' ).add_transformation( FT.inout('x'), FT.inout('y') ) mb.mem_funs( 'GetInset' ).add_transformation( FT.output('left'), FT.output('top'), FT.output('right'), FT.output('bottom') ) mb.mem_funs( 'GetPaintSize' ).add_transformation( FT.output('wide'), FT.output('tall') ) mb.mem_funs( 'GetClipRect' ).add_transformation( FT.output('x0'), FT.output('y0'), FT.output('x1'), FT.output('y1') ) mb.mem_funs( 'GetPinOffset' ).add_transformation( FT.output('dx'), FT.output('dy') ) mb.mem_funs( 'GetResizeOffset' ).add_transformation( FT.output('dx'), FT.output('dy') ) mb.mem_funs( 'GetCornerTextureSize' ).add_transformation( FT.output('w'), FT.output('h') ) # Exclude list mb.mem_funs('QueryInterface').exclude() # Custom implemented mb.mem_funs('PaintBackground').exclude() mb.mem_funs('Paint').exclude() mb.mem_funs('InvalidateLayout').exclude() # We don't care about build mode, since we can easily reload modules in python # We also don't want the user to be able to call methods like Delete. mb.mem_funs('IsBuildModeEditable').exclude() mb.mem_funs('SetBuildModeEditable').exclude() mb.mem_funs('IsBuildModeDeletable').exclude() mb.mem_funs('SetBuildModeDeletable').exclude() mb.mem_funs('IsBuildModeActive').exclude() #mb.mem_funs('SetAutoDelete').exclude() #mb.mem_funs('IsAutoDeleteSet').exclude() mb.mem_funs('OnDelete').exclude() mb.mem_funs('MarkForDeletion').exclude() mb.mem_funs('SetBuildGroup').exclude() mb.mem_funs('IsBuildGroupEnabled').exclude() mb.mem_funs('CreateControlByName').exclude() mb.mem_funs('LoadKeyBindings').exclude() mb.mem_funs('SaveKeyBindingsToBuffer').exclude() mb.mem_funs('LookupBoundKeys').exclude() mb.mem_funs('OnKeyTyped').exclude() mb.mem_funs('HasHotkey').exclude() mb.mem_funs('GetDragData').exclude() if self.settings.branch == 'swarm': mb.mem_funs('GetDragFailCursor').exclude() mb.mem_funs('GetDropCursor').exclude() mb.mem_funs('GetDropTarget').exclude() mb.mem_funs('IsDroppable').exclude() mb.mem_funs('OnPanelDropped').exclude() mb.mem_funs('OnPanelEnteredDroppablePanel').exclude() mb.mem_funs('OnPanelExitedDroppablePanel').exclude() mb.mem_funs('OnDragFailed').exclude() mb.mem_funs('OnDropContextHoverHide').exclude() mb.mem_funs('OnDropContextHoverShow').exclude() mb.mem_funs('OnDroppablePanelPaint').exclude() mb.mem_funs('OnGetAdditionalDragPanels').exclude() mb.mem_funs('OnDragFailed').exclude() mb.vars('m_PanelMap').exclude() mb.vars('m_MessageMap').exclude() mb.mem_funs('GetPanelMap').exclude() if self.settings.branch == 'source2013': mb.mem_funs('GetChildren').exclude() # Must use return_by_value. Then the converter will be used to wrap the vgui element in a safe handle mb.mem_funs( 'GetChild' ).call_policies = call_policies.return_value_policy(call_policies.return_by_value) mb.mem_funs( 'GetBorder' ).call_policies = call_policies.return_value_policy( call_policies.reference_existing_object ) if self.settings.branch == 'source2007': mb.mem_funs('GetBorderAtIndex').call_policies = call_policies.return_value_policy( call_policies.reference_existing_object ) mb.mem_funs( 'GetParent' ).call_policies = call_policies.return_value_policy(call_policies.return_by_value) mb.mem_funs( 'FindSiblingByName' ).call_policies = call_policies.return_value_policy(call_policies.return_by_value) mb.mem_funs( 'FindChildByName' ).call_policies = call_policies.return_value_policy(call_policies.return_by_value) mb.mem_funs( 'HasHotkey' ).call_policies = call_policies.return_value_policy(call_policies.return_by_value) mb.mem_funs( 'GetPanelWithKeyBindings' ).call_policies = call_policies.return_value_policy(call_policies.return_by_value) mb.mem_funs( 'LookupBinding' ).call_policies = call_policies.return_value_policy(call_policies.return_by_value) mb.mem_funs( 'LookupBindingByKeyCode' ).call_policies = call_policies.return_value_policy(call_policies.return_by_value) mb.mem_funs( 'LookupDefaultKey' ).call_policies = call_policies.return_value_policy(call_policies.return_by_value) mb.mem_funs( 'LookupMapForBinding' ).call_policies = call_policies.return_value_policy(call_policies.return_by_value) mb.mem_funs( 'GetTooltip' ).call_policies = call_policies.return_internal_reference() mb.mem_funs( 'GetDragDropInfo' ).call_policies = call_policies.return_value_policy(call_policies.return_by_value) mb.mem_funs( 'GetDragPanel' ).call_policies = call_policies.return_value_policy(call_policies.return_by_value) mb.mem_funs( 'GetPanel' ).call_policies = call_policies.return_value_policy(call_policies.return_by_value) mb.mem_funs( 'FindPanelAnimationEntry' ).call_policies = call_policies.return_value_policy(call_policies.return_by_value) mb.mem_funs( 'FindDropTargetPanel' ).call_policies = call_policies.return_value_policy(call_policies.return_by_value) if self.settings.branch == 'swarm': mb.mem_funs( 'GetNavDown' ).call_policies = call_policies.return_value_policy(call_policies.return_by_value) mb.mem_funs( 'GetNavDownPanel' ).call_policies = call_policies.return_value_policy(call_policies.return_by_value) mb.mem_funs( 'GetNavLeft' ).call_policies = call_policies.return_value_policy(call_policies.return_by_value) mb.mem_funs( 'GetNavLeftPanel' ).call_policies = call_policies.return_value_policy(call_policies.return_by_value) mb.mem_funs( 'GetNavRight' ).call_policies = call_policies.return_value_policy(call_policies.return_by_value) mb.mem_funs( 'GetNavRightPanel' ).call_policies = call_policies.return_value_policy(call_policies.return_by_value) mb.mem_funs( 'GetNavUp' ).call_policies = call_policies.return_value_policy(call_policies.return_by_value) mb.mem_funs( 'GetNavUpPanel' ).call_policies = call_policies.return_value_policy(call_policies.return_by_value) mb.mem_funs( 'NavigateDown' ).call_policies = call_policies.return_value_policy(call_policies.return_by_value) mb.mem_funs( 'NavigateLeft' ).call_policies = call_policies.return_value_policy(call_policies.return_by_value) mb.mem_funs( 'NavigateRight' ).call_policies = call_policies.return_value_policy(call_policies.return_by_value) mb.mem_funs( 'NavigateTo' ).call_policies = call_policies.return_value_policy(call_policies.return_by_value) mb.mem_funs( 'NavigateUp' ).call_policies = call_policies.return_value_policy(call_policies.return_by_value) mb.mem_funs( 'SetNavDown' ).call_policies = call_policies.return_value_policy(call_policies.return_by_value) mb.mem_funs( 'SetNavLeft' ).call_policies = call_policies.return_value_policy(call_policies.return_by_value) mb.mem_funs( 'SetNavRight' ).call_policies = call_policies.return_value_policy(call_policies.return_by_value) mb.mem_funs( 'SetNavUp' ).call_policies = call_policies.return_value_policy(call_policies.return_by_value) # Exclude mb.mem_funs('OnUnserialized').exclude() mb.mem_funs('GetSizer').exclude() mb.mem_funs('GetUnpackStructure').exclude() if self.settings.branch == 'swarm': # Tooltip class cls = mb.class_('Tooltip') cls.include()
def ManualTransformations ( mb ): global_ns = mb.global_ns if MAIN_NAMESPACE: main_ns = global_ns.namespace( MAIN_NAMESPACE ) else: main_ns = global_ns def create_output( size ): return [ ft.output( i ) for i in range( size ) ] return x= main_ns.mem_funs('::Caelum::Astronomy::getGregorianDateFromJulianDay') x.add_transformation( ft.output('year'), ft.output('month'), ft.output('day'), alias = 'getGregorianDateFromJulianDay' ) x.documentation = docit ("","JulianDay", "tuple - year,month,day") x=main_ns.mem_fun('::Caelum::Astronomy::getGregorianDateTimeFromJulianDay') x.add_transformation( ft.output('year'), ft.output('month'), ft.output('day'),ft.output('hour'), ft.output('minute'), ft.output('second'), alias='getGregorianDateTimeFromJulianDay' ) x.documentation = docit ("","JulianDay", "tuple - year,month,day,hour, minute, second") x=main_ns.mem_fun('::Caelum::Astronomy::convertEclipticToEquatorialRad') x.add_transformation( ft.inout ('rasc'), ft.inout('decl'), alias='convertEclipticToEquatorialRad') x.documentation = docit("","","tuple - rasc, decl") x=main_ns.mem_fun('::Caelum::Astronomy::convertRectangularToSpherical') x.add_transformation( ft.inout ('rasc'), ft.inout('decl'), ft.inout('dist'), alias='convertRectangularToSpherical') x.documentation = docit("","","tuple - rasc, decl, dist") x=main_ns.mem_fun('::Caelum::Astronomy::convertSphericalToRectangular') x.add_transformation( ft.inout ('x'), ft.inout('y'), ft.inout('z'), alias='convertSphericalToRectangular') x.documentation = docit("","","tuple - x,y,z") x=main_ns.mem_fun('::Caelum::Astronomy::convertEquatorialToHorizontal') x.add_transformation( ft.inout ('azimuth'), ft.inout('altitude'), alias='convertEquatorialToHorizontal') x.documentation = docit("","","tuple - azimuth,altitude") x=main_ns.mem_fun('::Caelum::Astronomy::getHorizontalSunPosition', arg_types=['::Caelum::LongReal','::Caelum::LongReal','::Caelum::LongReal','::Caelum::LongReal &','::Caelum::LongReal &']) x.add_transformation( ft.inout ('azimuth'), ft.inout('altitude'), alias='getHorizontalSunPositionDouble') x.documentation = docit("","","tuple - azimuth,altitude") x=main_ns.mem_fun('::Caelum::Astronomy::getHorizontalMoonPosition',arg_types=['::Caelum::LongReal','::Caelum::LongReal','::Caelum::LongReal','::Caelum::LongReal &','::Caelum::LongReal &']) x.add_transformation( ft.inout ('azimuth'), ft.inout('altitude'), alias='getHorizontalMoonPositionDouble') x.documentation = docit("","","tuple - azimuth,altitude") x=main_ns.mem_fun('::Caelum::Astronomy::getEclipticMoonPositionRad') x.add_transformation( ft.inout ('lon'), ft.inout('lat'), alias='getEclipticMoonPositionRad') x.documentation = docit("","","tuple - lon,lat")
mb.class_("Pack").member_function("GetFileOffset").add_transformation( ft.output("ofs")) mb.class_("Viewport").member_functions("Project").add_transformation( ft.output("x"), ft.output("y")) mb.class_("AABBTree").member_functions( "TestIntersection", arg_types=['float &', None, None, None]).add_transformation(ft.output("t"), ft.output("normal"), alias='test_intersection_ray') mb.class_("Texture").member_functions("GetFrameTexCoords").add_transformation( ft.output("u0"), ft.output("v0"), ft.output("u1"), ft.output("v1")) mb.member_functions("Projection").add_transformation(ft.output("a"), ft.output("b")) mb.member_functions("ParseEnvelope").add_transformation( ft.output("env"), ft.inout("pos")) mb.free_function("ParseAngleVariable").add_transformation( ft.output("var"), ft.inout("pos")) mb.free_function("ParseBigAngleVariable").add_transformation( ft.output("var"), ft.inout("pos")) l = ('Triangle', 'AABB', 'Sphere', 'Plane') for s in l: f = mb.namespace("Primitives").free_function( name="TestIntersection", arg_types=[ 'float &', None, ''.join(('::xfx::Primitives::', s, ' const &')), None, None ]) f.add_transformation(ft.output("t"), ft.output("norm"),
for f in c.member_functions( "Cache", arg_types = [], allow_empty = True ): f.exclude( ) c.add_static_property( 'cache', fget = f ) #mb.class_( "FileIterator_t" ).opaque = True #mb.class_( "TextureInfo" ).opaque = True mb.class_( lambda x: x.name.startswith( 'HWND' ) ).opaque = True mb.class_( "FileSystem" ).member_function( "GetFileSize" ).add_transformation( ft.output( "len" ) ) mb.class_( "Pack" ).member_function( "GetFileSize" ).add_transformation( ft.output( "len" ) ) mb.class_( "Pack" ).member_function( "GetFileOffset" ).add_transformation( ft.output( "ofs" ) ) mb.class_( "Viewport" ).member_functions( "Project" ).add_transformation( ft.output( "x" ), ft.output( "y" ) ) mb.class_( "AABBTree" ).member_functions( "TestIntersection", arg_types = [ 'float &', None, None, None ] ).add_transformation( ft.output( "t" ), ft.output( "normal" ), alias = 'test_intersection_ray' ) mb.class_( "Texture" ).member_functions( "GetFrameTexCoords" ).add_transformation( ft.output( "u0" ), ft.output( "v0" ), ft.output( "u1" ), ft.output( "v1" ) ) mb.member_functions( "Projection" ).add_transformation( ft.output( "a" ), ft.output( "b" ) ) mb.member_functions( "ParseEnvelope" ).add_transformation( ft.output( "env" ), ft.inout( "pos" ) ) mb.free_function( "ParseAngleVariable" ).add_transformation( ft.output( "var" ), ft.inout( "pos" ) ) mb.free_function( "ParseBigAngleVariable" ).add_transformation( ft.output( "var" ), ft.inout( "pos" ) ) l = ( 'Triangle', 'AABB', 'Sphere', 'Plane' ) for s in l: f = mb.namespace( "Primitives" ).free_function( name = "TestIntersection", arg_types = [ 'float &', None, ''.join( ( '::xfx::Primitives::', s, ' const &' ) ), None, None ] ) f.add_transformation( ft.output( "t" ), ft.output( "norm" ), alias = ''.join( ( f.alias, '_', camel_convert( s ) ) ) ) l = ( 'Mat4', 'Vec4' ) for s in l: f = mb.class_( "ShaderParams" ).member_function( name = "GetValue", arg_types = [ None, ''.join( ( '::xfx::', s, ' &' ) ) ] ) f.add_transformation( ft.output( "value" ), alias = ''.join( ( f.alias, '_', camel_convert( s ) ) ) ) l = ( 'int', 'float' ) for s in l:
def customize(self, mb): mb.global_ns.calldefs().create_with_signature = True hello_world = mb.free_fun("hello_world") hello_world.add_transformation(ft.output(0)) calc = mb.class_("calculator_t") assign_funs = calc.mem_funs(lambda decl: decl.name.startswith("assign")) assign_funs.add_transformation(ft.output(0), ft.output(1)) clone_and_assign_5 = calc.mem_fun("clone_and_assign_5") clone_and_assign_5.add_transformation(ft.output(0)) clone_and_assign_5.call_policies = call_policies.return_value_policy(call_policies.manage_new_object) window = mb.class_("window_t") window.mem_fun("resize").add_transformation(ft.input(0), ft.input(1)) window.mem_fun("resize_in_out").add_transformation(ft.inout(0), ft.inout(1)) point3d = mb.class_("point3d_t") point3d.add_wrapper_code("") point3d.mem_fun("initialize").add_transformation(ft.input_static_array(0, size=3)) point3d.mem_fun("position").add_transformation(ft.output_static_array(0, size=3)) point3d.mem_fun("distance").add_transformation(ft.output(1)) image = mb.class_("image_t") image.always_expose_using_scope = True image.member_function("get_size") image.member_function("get_size").add_transformation(ft.output(0), ft.output(1)) image.member_function("get_one_value").add_transformation(ft.output(0)) image.member_function("get_size2").add_transformation(ft.output(0), ft.output(1)) image.member_function("input_arg").add_transformation(ft.input(0)) image.member_function("fixed_input_array").add_transformation(ft.input_static_array(0, 3)) image.member_function("fixed_output_array").add_transformation(ft.output_static_array(0, 3)) mb.free_function("get_cpp_instance").call_policies = call_policies.return_value_policy( call_policies.reference_existing_object ) mb.variable("cpp_instance").exclude() cls = mb.class_("no_virtual_members_t") cls.member_function("member").add_transformation(ft.output(0)) cls = mb.class_("ft_private_destructor_t") cls.member_function("get_value").add_transformation(ft.output(0)) mb.decls(lambda decl: decl.name.startswith("_")).exclude() cls = mb.class_("bug_render_target_t") cls.mem_fun("get_statistics", arg_types=["float &"] * 2).add_transformation(ft.output(0), ft.output(1)) cls = mb.class_("modify_type_tester_t") do_nothing = cls.mem_fun("do_nothing") do_nothing.add_transformation(ft.modify_type(0, declarations.remove_reference)) clone = cls.mem_fun("clone") clone.call_policies = call_policies.return_value_policy(call_policies.manage_new_object) clone.add_transformation(ft.modify_type(0, declarations.remove_reference)) cls = mb.class_("input_c_buffer_tester_t") write_mf = cls.mem_fun("write") write_mf.add_transformation(ft.input_c_buffer("buffer", "size")) write_s = cls.mem_fun("write_s") write_s.add_transformation(ft.input_c_buffer("buffer", "size")) resource = mb.class_("resources_t") resource.held_type = "std::auto_ptr< %s >" % resource.decl_string transfer_ownership_tester = mb.class_("transfer_ownership_tester_t") tester = transfer_ownership_tester.mem_fun("tester") tester.add_transformation(ft.transfer_ownership(0)) render_queue_listener_t = mb.class_("render_queue_listener_t") render_queue_ended = render_queue_listener_t.mem_fun("render_queue_ended") render_queue_ended.add_transformation(ft.inout(2))
def ParsePanel(self, mb): # List of functions that should be overridable mb.mem_funs('SetVisible').virtuality = 'virtual' mb.mem_funs('SetParent').virtuality = 'virtual' mb.mem_funs('SetEnabled').virtuality = 'virtual' mb.mem_funs('SetBgColor').virtuality = 'virtual' mb.mem_funs('SetFgColor').virtuality = 'virtual' mb.mem_funs('SetCursor').virtuality = 'virtual' mb.mem_funs('InvalidateLayout').virtuality = 'virtual' mb.mem_funs('SetBorder').virtuality = 'virtual' mb.mem_funs('SetPaintBorderEnabled').virtuality = 'virtual' mb.mem_funs('SetPaintBackgroundEnabled').virtuality = 'virtual' mb.mem_funs('SetPaintEnabled').virtuality = 'virtual' mb.mem_funs('SetPaintBackgroundType').virtuality = 'virtual' mb.mem_funs('SetScheme').virtuality = 'virtual' mb.mem_funs('ApplySchemeSettings').virtuality = 'virtual' mb.mem_funs('OnCommand').virtuality = 'virtual' mb.mem_funs('OnMouseCaptureLost').virtuality = 'virtual' mb.mem_funs('OnSetFocus').virtuality = 'virtual' mb.mem_funs('OnKillFocus').virtuality = 'virtual' mb.mem_funs('OnDelete').virtuality = 'virtual' mb.mem_funs('OnThink').virtuality = 'virtual' mb.mem_funs('OnChildAdded').virtuality = 'virtual' mb.mem_funs('OnSizeChanged').virtuality = 'virtual' mb.mem_funs('OnTick').virtuality = 'virtual' mb.mem_funs('OnCursorMoved').virtuality = 'virtual' mb.mem_funs('OnCursorEntered').virtuality = 'virtual' mb.mem_funs('OnCursorExited').virtuality = 'virtual' mb.mem_funs('OnMousePressed').virtuality = 'virtual' mb.mem_funs('OnMouseDoublePressed').virtuality = 'virtual' mb.mem_funs('OnMouseReleased').virtuality = 'virtual' mb.mem_funs('OnMouseWheeled').virtuality = 'virtual' mb.mem_funs('OnMouseTriplePressed').virtuality = 'virtual' mb.mem_funs('OnKeyCodePressed').virtuality = 'virtual' mb.mem_funs('OnKeyCodeTyped').virtuality = 'virtual' mb.mem_funs('OnKeyCodeReleased').virtuality = 'virtual' mb.mem_funs('OnKeyFocusTicked').virtuality = 'virtual' mb.mem_funs('OnMouseFocusTicked').virtuality = 'virtual' mb.mem_funs('PaintBackground').virtuality = 'virtual' mb.mem_funs('Paint').virtuality = 'virtual' #mb.mem_funs('PaintBorder').virtuality = 'virtual' # TODO: Don't believe we are ever interested in painting borders in python mb.mem_funs('PaintBuildOverlay').virtuality = 'virtual' mb.mem_funs('PostChildPaint').virtuality = 'virtual' mb.mem_funs('PerformLayout').virtuality = 'virtual' mb.mem_funs('SetMouseInputEnabled').virtuality = 'virtual' mb.mem_funs('SetKeyBoardInputEnabled').virtuality = 'virtual' mb.mem_funs('SetDragEnabled').virtuality = 'virtual' mb.mem_funs('OnRequestFocus').virtuality = 'virtual' mb.mem_funs('OnScreenSizeChanged').virtuality = 'virtual' # Transformations mb.mem_funs( 'GetPos' ).add_transformation( FT.output('x'), FT.output('y') ) mb.class_('Panel').mem_funs( 'GetSize' ).add_transformation( FT.output('wide'), FT.output('tall') ) mb.class_('Panel').mem_funs( 'GetBounds' ).add_transformation( FT.output('x'), FT.output('y'), FT.output('wide'), FT.output('tall') ) mb.mem_funs( 'GetMinimumSize' ).add_transformation( FT.output('wide'), FT.output('tall') ) mb.mem_funs( 'LocalToScreen' ).add_transformation( FT.inout('x'), FT.inout('y') ) mb.mem_funs( 'ScreenToLocal' ).add_transformation( FT.inout('x'), FT.inout('y') ) mb.mem_funs( 'ParentLocalToScreen' ).add_transformation( FT.inout('x'), FT.inout('y') ) mb.mem_funs( 'GetInset' ).add_transformation( FT.output('left'), FT.output('top'), FT.output('right'), FT.output('bottom') ) mb.mem_funs( 'GetPaintSize' ).add_transformation( FT.output('wide'), FT.output('tall') ) mb.mem_funs( 'GetClipRect' ).add_transformation( FT.output('x0'), FT.output('y0'), FT.output('x1'), FT.output('y1') ) mb.mem_funs( 'GetPinOffset' ).add_transformation( FT.output('dx'), FT.output('dy') ) mb.mem_funs( 'GetResizeOffset' ).add_transformation( FT.output('dx'), FT.output('dy') ) mb.mem_funs( 'GetCornerTextureSize' ).add_transformation( FT.output('w'), FT.output('h') ) # Exclude list mb.mem_funs('QueryInterface').exclude() # We don't care about build mode, since we can easily reload modules in python # We also don't want the user to be able to call methods like Delete. mb.mem_funs('IsBuildModeEditable').exclude() mb.mem_funs('SetBuildModeEditable').exclude() mb.mem_funs('IsBuildModeDeletable').exclude() mb.mem_funs('SetBuildModeDeletable').exclude() mb.mem_funs('IsBuildModeActive').exclude() #mb.mem_funs('SetAutoDelete').exclude() #mb.mem_funs('IsAutoDeleteSet').exclude() mb.mem_funs('OnDelete').exclude() mb.mem_funs('MarkForDeletion').exclude() mb.mem_funs('SetBuildGroup').exclude() mb.mem_funs('IsBuildGroupEnabled').exclude() mb.mem_funs('CreateControlByName').exclude() mb.mem_funs('LoadKeyBindings').exclude() mb.mem_funs('SaveKeyBindingsToBuffer').exclude() mb.mem_funs('LookupBoundKeys').exclude() mb.mem_funs('OnKeyTyped').exclude() mb.mem_funs('HasHotkey').exclude() mb.mem_funs('GetDragData').exclude() if self.settings.branch == 'swarm': mb.mem_funs('GetDragFailCursor').exclude() mb.mem_funs('GetDropCursor').exclude() mb.mem_funs('GetDropTarget').exclude() mb.mem_funs('IsDroppable').exclude() mb.mem_funs('OnPanelDropped').exclude() mb.mem_funs('OnPanelEnteredDroppablePanel').exclude() mb.mem_funs('OnPanelExitedDroppablePanel').exclude() mb.mem_funs('OnDragFailed').exclude() mb.mem_funs('OnDropContextHoverHide').exclude() mb.mem_funs('OnDropContextHoverShow').exclude() mb.mem_funs('OnDroppablePanelPaint').exclude() mb.mem_funs('OnGetAdditionalDragPanels').exclude() mb.mem_funs('OnDragFailed').exclude() mb.vars('m_PanelMap').exclude() mb.vars('m_MessageMap').exclude() mb.mem_funs('GetPanelMap').exclude() if self.settings.branch == 'source2013': mb.mem_funs('GetChildren').exclude() # Must use return_by_value. Then the converter will be used to wrap the vgui element in a safe handle mb.mem_funs( 'GetChild' ).call_policies = call_policies.return_value_policy(call_policies.return_by_value) mb.mem_funs( 'GetBorder' ).call_policies = call_policies.return_value_policy( call_policies.reference_existing_object ) if self.settings.branch == 'source2007': mb.mem_funs('GetBorderAtIndex').call_policies = call_policies.return_value_policy( call_policies.reference_existing_object ) mb.mem_funs( 'GetParent' ).call_policies = call_policies.return_value_policy(call_policies.return_by_value) mb.mem_funs( 'FindSiblingByName' ).call_policies = call_policies.return_value_policy(call_policies.return_by_value) mb.mem_funs( 'FindChildByName' ).call_policies = call_policies.return_value_policy(call_policies.return_by_value) mb.mem_funs( 'HasHotkey' ).call_policies = call_policies.return_value_policy(call_policies.return_by_value) mb.mem_funs( 'GetPanelWithKeyBindings' ).call_policies = call_policies.return_value_policy(call_policies.return_by_value) mb.mem_funs( 'LookupBinding' ).call_policies = call_policies.return_value_policy(call_policies.return_by_value) mb.mem_funs( 'LookupBindingByKeyCode' ).call_policies = call_policies.return_value_policy(call_policies.return_by_value) mb.mem_funs( 'LookupDefaultKey' ).call_policies = call_policies.return_value_policy(call_policies.return_by_value) mb.mem_funs( 'LookupMapForBinding' ).call_policies = call_policies.return_value_policy(call_policies.return_by_value) mb.mem_funs( 'GetTooltip' ).call_policies = call_policies.return_internal_reference() mb.mem_funs( 'GetDragDropInfo' ).call_policies = call_policies.return_value_policy(call_policies.return_by_value) mb.mem_funs( 'GetDragPanel' ).call_policies = call_policies.return_value_policy(call_policies.return_by_value) mb.mem_funs( 'GetPanel' ).call_policies = call_policies.return_value_policy(call_policies.return_by_value) mb.mem_funs( 'FindPanelAnimationEntry' ).call_policies = call_policies.return_value_policy(call_policies.return_by_value) mb.mem_funs( 'FindDropTargetPanel' ).call_policies = call_policies.return_value_policy(call_policies.return_by_value) if self.settings.branch == 'swarm': mb.mem_funs( 'GetNavDown' ).call_policies = call_policies.return_value_policy(call_policies.return_by_value) mb.mem_funs( 'GetNavDownPanel' ).call_policies = call_policies.return_value_policy(call_policies.return_by_value) mb.mem_funs( 'GetNavLeft' ).call_policies = call_policies.return_value_policy(call_policies.return_by_value) mb.mem_funs( 'GetNavLeftPanel' ).call_policies = call_policies.return_value_policy(call_policies.return_by_value) mb.mem_funs( 'GetNavRight' ).call_policies = call_policies.return_value_policy(call_policies.return_by_value) mb.mem_funs( 'GetNavRightPanel' ).call_policies = call_policies.return_value_policy(call_policies.return_by_value) mb.mem_funs( 'GetNavUp' ).call_policies = call_policies.return_value_policy(call_policies.return_by_value) mb.mem_funs( 'GetNavUpPanel' ).call_policies = call_policies.return_value_policy(call_policies.return_by_value) mb.mem_funs( 'NavigateDown' ).call_policies = call_policies.return_value_policy(call_policies.return_by_value) mb.mem_funs( 'NavigateLeft' ).call_policies = call_policies.return_value_policy(call_policies.return_by_value) mb.mem_funs( 'NavigateRight' ).call_policies = call_policies.return_value_policy(call_policies.return_by_value) mb.mem_funs( 'NavigateTo' ).call_policies = call_policies.return_value_policy(call_policies.return_by_value) mb.mem_funs( 'NavigateUp' ).call_policies = call_policies.return_value_policy(call_policies.return_by_value) mb.mem_funs( 'SetNavDown' ).call_policies = call_policies.return_value_policy(call_policies.return_by_value) mb.mem_funs( 'SetNavLeft' ).call_policies = call_policies.return_value_policy(call_policies.return_by_value) mb.mem_funs( 'SetNavRight' ).call_policies = call_policies.return_value_policy(call_policies.return_by_value) mb.mem_funs( 'SetNavUp' ).call_policies = call_policies.return_value_policy(call_policies.return_by_value) # Exclude mb.mem_funs('OnUnserialized').exclude() mb.mem_funs('GetSizer').exclude() mb.mem_funs('GetUnpackStructure').exclude() if self.settings.branch == 'swarm': # Tooltip class cls = mb.class_('Tooltip') cls.include()
def ParsePanel(self, mb): #all_classes = mb.classes(self.panel_cls_list) if not novguilib: # FIXME/TODO mb.mem_funs('PyDeletePanel').rename('DeletePanel') mb.mem_fun('PyOnMessage').rename( 'OnMessage' ) # List of functions that should be overridable mb.mem_funs('SetVisible').virtuality = 'virtual' mb.mem_funs('SetParent').virtuality = 'virtual' mb.mem_funs('SetEnabled').virtuality = 'virtual' mb.mem_funs('SetBgColor').virtuality = 'virtual' mb.mem_funs('SetFgColor').virtuality = 'virtual' mb.mem_funs('SetCursor').virtuality = 'virtual' mb.mem_funs('InvalidateLayout').virtuality = 'virtual' mb.mem_funs('SetBorder').virtuality = 'virtual' mb.mem_funs('SetPaintBorderEnabled').virtuality = 'virtual' mb.mem_funs('SetPaintBackgroundEnabled').virtuality = 'virtual' mb.mem_funs('SetPaintEnabled').virtuality = 'virtual' mb.mem_funs('SetPaintBackgroundType').virtuality = 'virtual' mb.mem_funs('SetScheme').virtuality = 'virtual' mb.mem_funs('ApplySchemeSettings').virtuality = 'virtual' mb.mem_funs('OnCommand').virtuality = 'virtual' mb.mem_funs('OnMouseCaptureLost').virtuality = 'virtual' mb.mem_funs('OnSetFocus').virtuality = 'virtual' mb.mem_funs('OnKillFocus').virtuality = 'virtual' mb.mem_funs('OnDelete').virtuality = 'virtual' mb.mem_funs('OnThink').virtuality = 'virtual' mb.mem_funs('OnChildAdded').virtuality = 'virtual' mb.mem_funs('OnSizeChanged').virtuality = 'virtual' mb.mem_funs('OnTick').virtuality = 'virtual' mb.mem_funs('OnCursorMoved').virtuality = 'virtual' mb.mem_funs('OnCursorEntered').virtuality = 'virtual' mb.mem_funs('OnCursorExited').virtuality = 'virtual' mb.mem_funs('OnMousePressed').virtuality = 'virtual' mb.mem_funs('OnMouseDoublePressed').virtuality = 'virtual' mb.mem_funs('OnMouseReleased').virtuality = 'virtual' mb.mem_funs('OnMouseWheeled').virtuality = 'virtual' mb.mem_funs('OnMouseTriplePressed').virtuality = 'virtual' mb.mem_funs('OnKeyCodePressed').virtuality = 'virtual' mb.mem_funs('OnKeyCodeTyped').virtuality = 'virtual' mb.mem_funs('OnKeyCodeReleased').virtuality = 'virtual' mb.mem_funs('OnKeyFocusTicked').virtuality = 'virtual' mb.mem_funs('OnMouseFocusTicked').virtuality = 'virtual' mb.mem_funs('PaintBackground').virtuality = 'virtual' mb.mem_funs('Paint').virtuality = 'virtual' #mb.mem_funs('PaintBorder').virtuality = 'virtual' # TODO: Don't believe we are ever interested in painting borders in python mb.mem_funs('PaintBuildOverlay').virtuality = 'virtual' mb.mem_funs('PostChildPaint').virtuality = 'virtual' mb.mem_funs('PerformLayout').virtuality = 'virtual' mb.mem_funs('SetMouseInputEnabled').virtuality = 'virtual' mb.mem_funs('SetKeyBoardInputEnabled').virtuality = 'virtual' mb.mem_funs('SetDragEnabled').virtuality = 'virtual' mb.mem_funs('OnRequestFocus').virtuality = 'virtual' mb.mem_funs('OnScreenSizeChanged').virtuality = 'virtual' # Transformations mb.mem_funs( 'GetPos' ).add_transformation( FT.output('x'), FT.output('y') ) mb.class_('Panel').mem_funs( 'GetSize' ).add_transformation( FT.output('wide'), FT.output('tall') ) mb.class_('Panel').mem_funs( 'GetBounds' ).add_transformation( FT.output('x'), FT.output('y'), FT.output('wide'), FT.output('tall') ) mb.mem_funs( 'GetMinimumSize' ).add_transformation( FT.output('wide'), FT.output('tall') ) mb.mem_funs( 'LocalToScreen' ).add_transformation( FT.inout('x'), FT.inout('y') ) mb.mem_funs( 'ScreenToLocal' ).add_transformation( FT.inout('x'), FT.inout('y') ) mb.mem_funs( 'ParentLocalToScreen' ).add_transformation( FT.inout('x'), FT.inout('y') ) mb.mem_funs( 'GetInset' ).add_transformation( FT.output('left'), FT.output('top'), FT.output('right'), FT.output('bottom') ) mb.mem_funs( 'GetPaintSize' ).add_transformation( FT.output('wide'), FT.output('tall') ) mb.mem_funs( 'GetClipRect' ).add_transformation( FT.output('x0'), FT.output('y0'), FT.output('x1'), FT.output('y1') ) mb.mem_funs( 'GetPinOffset' ).add_transformation( FT.output('dx'), FT.output('dy') ) mb.mem_funs( 'GetResizeOffset' ).add_transformation( FT.output('dx'), FT.output('dy') ) mb.mem_funs( 'GetCornerTextureSize' ).add_transformation( FT.output('w'), FT.output('h') ) # Exclude list mb.mem_funs('SetParent', lambda decl: HasArgType(decl, 'Panel')).exclude() # Custom wrapper if not novguilib: # FIXME/TODO mb.mem_funs('PyOnMessage').exclude() # Custom wrapper mb.mem_funs('QueryInterface').exclude() # Custom implemented mb.mem_funs('PaintBackground').exclude() mb.mem_funs('Paint').exclude() mb.mem_funs('InvalidateLayout').exclude() # We don't care about build mode, since we can easily reload modules in python # We also don't want the user to be able to call methods like Delete. mb.mem_funs('IsBuildModeEditable').exclude() mb.mem_funs('SetBuildModeEditable').exclude() mb.mem_funs('IsBuildModeDeletable').exclude() mb.mem_funs('SetBuildModeDeletable').exclude() mb.mem_funs('IsBuildModeActive').exclude() #mb.mem_funs('SetAutoDelete').exclude() #mb.mem_funs('IsAutoDeleteSet').exclude() if not novguilib: # Overriden in ASW_CODE_BASE to prevent delete. Instead a friendly Python cleanup is done. mb.mem_funs('DeletePanel').exclude() mb.mem_funs('OnDelete').exclude() mb.mem_funs('MarkForDeletion').exclude() mb.mem_funs('SetBuildGroup').exclude() mb.mem_funs('IsBuildGroupEnabled').exclude() mb.mem_funs('CreateControlByName').exclude() mb.mem_funs('LoadKeyBindings').exclude() # Not sure why this one is giving problems. Not that it is important. mb.mem_funs('OnKeyTyped').exclude() mb.mem_funs('HasHotkey').exclude() mb.vars('m_PanelMap').exclude() mb.vars('m_MessageMap').exclude() mb.mem_funs('GetPanelMap').exclude() # Must use return_by_value. Then the converter will be used to wrap the vgui element in a safe handle mb.mem_funs( 'GetChild' ).call_policies = call_policies.return_value_policy( call_policies.return_by_value ) mb.mem_funs( 'GetBorder' ).call_policies = call_policies.return_value_policy( call_policies.reference_existing_object ) mb.mem_funs( 'GetParent' ).call_policies = call_policies.return_value_policy( call_policies.return_by_value ) mb.mem_funs( 'FindSiblingByName' ).call_policies = call_policies.return_value_policy( call_policies.return_by_value ) mb.mem_funs( 'FindChildByName' ).call_policies = call_policies.return_value_policy( call_policies.return_by_value ) mb.mem_funs( 'HasHotkey' ).call_policies = call_policies.return_value_policy( call_policies.return_by_value ) mb.mem_funs( 'GetPanelWithKeyBindings' ).call_policies = call_policies.return_value_policy( call_policies.return_by_value ) mb.mem_funs( 'LookupBinding' ).call_policies = call_policies.return_value_policy( call_policies.return_by_value ) mb.mem_funs( 'LookupBindingByKeyCode' ).call_policies = call_policies.return_value_policy( call_policies.return_by_value ) mb.mem_funs( 'LookupDefaultKey' ).call_policies = call_policies.return_value_policy( call_policies.return_by_value ) mb.mem_funs( 'LookupMapForBinding' ).call_policies = call_policies.return_value_policy( call_policies.return_by_value ) mb.mem_funs( 'GetTooltip' ).call_policies = call_policies.return_internal_reference() mb.mem_funs( 'GetDragDropInfo' ).call_policies = call_policies.return_value_policy( call_policies.return_by_value ) mb.mem_funs( 'GetDragPanel' ).call_policies = call_policies.return_value_policy( call_policies.return_by_value ) mb.mem_funs( 'GetPanel' ).call_policies = call_policies.return_value_policy( call_policies.return_by_value ) mb.mem_funs( 'FindPanelAnimationEntry' ).call_policies = call_policies.return_value_policy( call_policies.return_by_value ) mb.mem_funs( 'FindDropTargetPanel' ).call_policies = call_policies.return_value_policy( call_policies.return_by_value ) if settings.ASW_CODE_BASE: mb.mem_funs( 'GetNavDown' ).call_policies = call_policies.return_value_policy( call_policies.return_by_value ) mb.mem_funs( 'GetNavDownPanel' ).call_policies = call_policies.return_value_policy( call_policies.return_by_value ) mb.mem_funs( 'GetNavLeft' ).call_policies = call_policies.return_value_policy( call_policies.return_by_value ) mb.mem_funs( 'GetNavLeftPanel' ).call_policies = call_policies.return_value_policy( call_policies.return_by_value ) mb.mem_funs( 'GetNavRight' ).call_policies = call_policies.return_value_policy( call_policies.return_by_value ) mb.mem_funs( 'GetNavRightPanel' ).call_policies = call_policies.return_value_policy( call_policies.return_by_value ) mb.mem_funs( 'GetNavUp' ).call_policies = call_policies.return_value_policy( call_policies.return_by_value ) mb.mem_funs( 'GetNavUpPanel' ).call_policies = call_policies.return_value_policy( call_policies.return_by_value ) mb.mem_funs( 'NavigateDown' ).call_policies = call_policies.return_value_policy( call_policies.return_by_value ) mb.mem_funs( 'NavigateLeft' ).call_policies = call_policies.return_value_policy( call_policies.return_by_value ) mb.mem_funs( 'NavigateRight' ).call_policies = call_policies.return_value_policy( call_policies.return_by_value ) mb.mem_funs( 'NavigateTo' ).call_policies = call_policies.return_value_policy( call_policies.return_by_value ) mb.mem_funs( 'NavigateUp' ).call_policies = call_policies.return_value_policy( call_policies.return_by_value ) mb.mem_funs( 'SetNavDown' ).call_policies = call_policies.return_value_policy( call_policies.return_by_value ) mb.mem_funs( 'SetNavLeft' ).call_policies = call_policies.return_value_policy( call_policies.return_by_value ) mb.mem_funs( 'SetNavRight' ).call_policies = call_policies.return_value_policy( call_policies.return_by_value ) mb.mem_funs( 'SetNavUp' ).call_policies = call_policies.return_value_policy( call_policies.return_by_value ) # Exclude mb.mem_funs('OnUnserialized').exclude() mb.mem_funs('GetSizer').exclude() mb.mem_funs('GetUnpackStructure').exclude() # Tooltip class cls = mb.class_('Tooltip') cls.include()
def customize( self, mb ): mb.global_ns.calldefs().create_with_signature = True hello_world = mb.free_fun( 'hello_world' ) hello_world.add_transformation( ft.output(0) ) calc = mb.class_('calculator_t' ) assign_funs = calc.mem_funs( lambda decl: decl.name.startswith( 'assign' ) ) assign_funs.add_transformation( ft.output(0), ft.output(1) ) clone_and_assign_5 = calc.mem_fun( 'clone_and_assign_5' ) clone_and_assign_5.add_transformation( ft.output(0) ) clone_and_assign_5.call_policies = call_policies.return_value_policy( call_policies.manage_new_object ) window = mb.class_( 'window_t' ) window.mem_fun( 'resize' ).add_transformation( ft.input(0), ft.input(1) ) window.mem_fun( 'resize_in_out' ).add_transformation( ft.inout(0), ft.inout(1) ) point3d = mb.class_( 'point3d_t' ) point3d.add_wrapper_code( '' ) point3d.mem_fun( 'initialize' ).add_transformation( ft.input_static_array(0, size=3) ) point3d.mem_fun( 'position' ).add_transformation( ft.output_static_array(0, size=3) ) point3d.mem_fun( 'distance' ).add_transformation( ft.output(1) ) image = mb.class_( "image_t" ) image.always_expose_using_scope = True image.member_function( "get_size" ) image.member_function( "get_size" ).add_transformation( ft.output(0), ft.output(1) ) image.member_function( "get_one_value" ).add_transformation( ft.output(0) ) image.member_function( "get_size2" ).add_transformation( ft.output(0), ft.output(1) ) image.member_function( "input_arg" ).add_transformation( ft.input(0) ) image.member_function( "fixed_input_array" ).add_transformation( ft.input_static_array(0,3) ) image.member_function( "fixed_output_array" ).add_transformation( ft.output_static_array(0,3) ) mb.free_function("get_cpp_instance").call_policies \ = call_policies.return_value_policy(call_policies.reference_existing_object) mb.variable( "cpp_instance" ).exclude() cls = mb.class_("no_virtual_members_t") cls.member_function("member").add_transformation( ft.output(0) ) cls = mb.class_("ft_private_destructor_t") cls.member_function("get_value").add_transformation( ft.output(0) ) mb.decls(lambda decl: decl.name.startswith("_")).exclude() cls = mb.class_("bug_render_target_t") cls.mem_fun("get_statistics", arg_types=['float &']*2).add_transformation( ft.output(0), ft.output(1) ) cls = mb.class_( 'modify_type_tester_t' ) do_nothing = cls.mem_fun( 'do_nothing' ) do_nothing.add_transformation( ft.modify_type(0, declarations.remove_reference ) ) clone = cls.mem_fun( 'clone' ) clone.call_policies = call_policies.return_value_policy( call_policies.manage_new_object ) clone.add_transformation( ft.modify_type(0, declarations.remove_reference ) ) cls = mb.class_( 'input_c_buffer_tester_t') write_mf = cls.mem_fun( 'write' ) write_mf.add_transformation( ft.input_c_buffer( 'buffer', 'size' ) ) write_s = cls.mem_fun( 'write_s' ) write_s.add_transformation( ft.input_c_buffer( 'buffer', 'size' ) ) resource = mb.class_( 'resources_t' ) resource.held_type = 'std::auto_ptr< %s >' % resource.decl_string transfer_ownership_tester = mb.class_( 'transfer_ownership_tester_t' ) tester = transfer_ownership_tester.mem_fun( 'tester' ) tester.add_transformation( ft.transfer_ownership( 0 ) ) render_queue_listener_t = mb.class_( 'render_queue_listener_t' ) render_queue_ended = render_queue_listener_t.mem_fun( 'render_queue_ended' ) render_queue_ended.add_transformation( ft.inout(2) )
def customize( self, mb ): set_flag = mb.mem_fun( '::tests::listener::listen' ) set_flag.add_transformation( ft.inout(2) ) set_flag = mb.mem_fun( '::tests::listener::listenPV' ) set_flag.add_transformation( ft.inout(2) )