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()
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