예제 #1
0
def ManualFixes ( mb ):    
    global_ns = mb.global_ns
    if MAIN_NAMESPACE:
        main_ns = global_ns.namespace( MAIN_NAMESPACE )
    else:
        main_ns = global_ns
        
    ## issue where the defaults are &0.0 instead of 0.0
    fixes=['btTransform', 'btRigidBody']
    for e in fixes:
        for c in global_ns.class_(e).constructors():
            for a in c.arguments:
                if a.default_value and "&0.0" in a.default_value:
                    a.default_value = "::btVector3( (0.0), (0.0), (0.0) )"
   
    ## Bug ingccxml where it doesn't get the namespace for default values
    ## btCollisionWorld::addCollisionObject
    f=main_ns.class_('btCollisionWorld').mem_fun('addCollisionObject')
    f.arguments[1].default_value = 'btBroadphaseProxy::DefaultFilter'  # (short int)(btBroadphaseProxy::DefaultFilter)
    f.arguments[2].default_value = 'btBroadphaseProxy::AllFilter'  # (short int)(btBroadphaseProxy::AllFilter)

    # another relate class with incorrect default argument namespace
    f=main_ns.class_('btDiscreteDynamicsWorld').mem_fun('addCollisionObject')
    f.arguments[1].default_value = 'btBroadphaseProxy::StaticFilter'  
    
    f = ['::btBroadphaseInterface::createProxy',
        '::btMultiSapBroadphase::createProxy',
        '::btDispatcher::getNewManifold'
        ]
    for fun in f:
        print "setting call policy", fun
        main_ns.member_function(fun).call_policies = call_policies.default_call_policies()
    
    for fun in main_ns.member_functions(name='rayTest'):
        for a in fun.arguments:
            if a.default_value and "&0.0" in a.default_value:
                a.default_value = "::btVector3( (0.0), (0.0), (0.0) )"

    f=main_ns.class_('btConvexPointCloudShape').mem_fun('setPoints')
    for a in f.arguments:
        if a._name == 'localScaling':
            a.default_value= "::btVector3( (1.0), (1.0), (1.0) )"

    main_ns.class_( '::btHashMap< btHashPtr, bParse::bStructHandle* >' ).constructors().exclude()
예제 #2
0
def ManualFixes ( mb ):    

    global_ns = mb.global_ns
    main_ns = global_ns
    funcs = [
           '::ssgBranch::getByName'
           ,'::ssgBranch::getByPath'
           ,'::ssgEntity::getByName'
           ,'::ssgEntity::getByPath'
        ]
#     for f in funcs:  
#         main_ns.member_functions(f).call_policies = call_policies.default_call_policies()

    # bug in Py++  where is uses the wrong call policies on a transformed function
    for fun in main_ns.member_functions(allow_empty=True):
        if fun.transformations:
            if declarations.is_pointer(fun.return_type ) :
                rawarg =  declarations.remove_declarated(
                        declarations.remove_const( 
                            declarations.remove_reference( 
                                declarations.remove_pointer ( fun.return_type ))))
                if not declarations.is_arithmetic (rawarg) and not declarations.is_void(rawarg):
                    fun.call_policies = call_policies.default_call_policies()
                    print "Changed call policies on ", fun