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")
def set_call_policies( mb ): CEGUI_ns = mb.global_ns.namespace ('CEGUI') # Set the default policy to deal with pointer/reference return types to reference_existing object # as this is the CEGUI Default. mem_funs = CEGUI_ns.calldefs () mem_funs.create_with_signature = True #Generated code will not compile on #MSVC 7.1 if function has throw modifier. for mem_fun in mem_funs: if mem_fun.call_policies: continue if declarations.is_pointer (mem_fun.return_type) or declarations.is_reference (mem_fun.return_type): mem_fun.call_policies = call_policies.return_value_policy( call_policies.reference_existing_object ) ## OK so the CEGUI String class is ugly (from a python perspective) ## I'm going to fix the pointer arguments so you can use ctypes to use the class ## however real work is in hand_made_wrappers with a new 'assign' function for fun in CEGUI_ns.class_('String').member_functions(): arg_position = 0 for arg in fun.arguments: if declarations.type_traits.is_pointer(arg.type): # fun.add_transformation( ft.modify_type(arg_position,common_utils._ReturnUnsignedInt ), alias=fun.name ) fun.documentation = common_utils.docit ("Modified Input Argument to work with CTypes", "Argument "+arg.name+ "(pos:" + str(arg_position)\ +") takes a CTypes.adddressof(xx)", "...") break arg_position +=1 for fun in CEGUI_ns.class_('String').constructors(): arg_position = 0 for arg in fun.arguments: if declarations.type_traits.is_pointer(arg.type): fun.add_transformation( ft.modify_type(arg_position,common_utils._ReturnUnsignedInt ), alias=fun.name ) fun.documentation = common_utils.docit ("Modified Input Argument to work with CTypes", "Argument "+arg.name+ "(pos:" + str(arg_position)\ +") takes a CTypes.adddressof(xx)", "...") break arg_position +=1