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