Exemple #1
0
    def pycode(self):
        global _in_pro, _in_function

        pars = []
        keys = []

        plist = self.subroutine_body.parameter_list
        if plist:
            for p in plist.get_items():
                if p.EXTRA:
                    # FIXME: implement this!
                    error.conversion_error("can't handle _EXTRA yet",
                                           self.lineno)
                    return ''
                if p.EQUALS:
                    keys.append(
                        (pycode(p.IDENTIFIER[0]), pycode(p.IDENTIFIER[1])))
                else:
                    pars.append(pycode(p.IDENTIFIER))

        name = str(self.subroutine_body.IDENTIFIER)
        fmap = map.get_subroutine_map(name)
        if not fmap:
            inpars = range(1, len(pars) + 1)
            outpars = inpars
            inkeys = [k[0] for k in keys]
            outkeys = inkeys

        if self.PRO:
            _in_pro = True
            if not fmap:
                fmap = map.map_pro(name,
                                   inpars=inpars,
                                   outpars=outpars,
                                   inkeys=inkeys,
                                   outkeys=outkeys)
        else:
            _in_function = True
            if not fmap:
                fmap = map.map_func(name, inpars=inpars, inkeys=inkeys)

        try:
            header, body = fmap.pydef(pars, keys)
        except map.Error, e:
            error.mapping_error(str(e), self.lineno)
            header, body = '', ''
Exemple #2
0
#--------------------------------------------------------------

#--------------------------------
#  Erode2 routines in erode.pro
#--------------------------------
## map_func('Flow_Codes_Old', inpars=[1], noptional=0,
##         inkeys=['ARC'], outkeys=['MAP','INCS','OPPS'])
map_func('Flow_Codes', inpars=[], inkeys=['ARC'])
map_func('Flow_Code_Opps', inpars=[], inkeys=['ARC'])
map_func('Flow_Neighbor_Incs', inpars=[1])
map_func('Flow_Code_Map', inpars=[1], inkeys=['ARC'])
## map_func('Parent_IDs', inpars=[1], noptional=0,
##         outkeys=['NON_PARENTS'])
map_func('Parent_IDs', inpars=[1], noptional=0)
map_func('Non_Parent_IDs', inpars=[1], noptional=0)
map_pro('Get_Flux_Indices', inpars=[1], outpars=range(2, 20), noptional=2)
map_pro('Update_Flow_Widths',
        inpars=range(1, 23),
        outpars=[1],
        noptional=0,
        inkeys=['REPORT'])
map_pro('Update_Flow_Lengths',
        inpars=range(1, 23),
        outpars=[1],
        noptional=0,
        inkeys=['REPORT'])
map_func('Filled_DEM', inpars=range(1, 4), noptional=0, inkeys=['SILENT'])
map_func('Flow_Grid',
         inpars=range(1, 8),
         noptional=0,
         inkeys=[
Exemple #3
0
################################################################################
#
#  IDL function and procedure maps, grouped by type
#
################################################################################

#---------------------------------------
#  Time-related routines (import time)
#---------------------------------------
map_func('SYSTIME',
         inpars=[1],
         callfunc=(lambda i, o: 'time.time()'),
         extracode='import time')
map_pro('WAIT',
        inpars=[1],
        callfunc=(lambda i, o: 'time.sleep(%s)' % i[0]),
        extracode='import time')

#----------------------------
#  Pointer-related routines
#----------------------------
# map_pro('PTRARR', ### Included with Array Init routines below.
map_pro('PTR_FREE',
        inpars=range(1, 33),
        noptional=31,
        callfunc=(lambda i, o: idl_ptr_free_callfunc(i, o)))
map_func('PTR_NEW',
         inpars=[1],
         noptional=1,
         inkeys=['ALLOCATE_HEAP', 'NO_COPY'],
         callfunc=(lambda i, o: idl_ptr_new_callfunc(i, o)))
Exemple #4
0
# Variable maps
#
################################################################################

# pi is in Numeric/numarray
map_var('!DPI', 'pi')
map_var('!RADEG', '_radeg', '_radeg = 180.0 / pi')

################################################################################
#
# Procedure maps
#
################################################################################

map_pro('ON_ERROR',
        inpars=[1],
        callfunc=(lambda i, o: '# ON_ERROR, %s' % i[0]))
map_pro('PRINT',
        inpars=range(1, 101),
        noptional=99,
        inkeys=['FORMAT'],
        callfunc=(lambda i, o: 'print ' + ', '.join(i)))

################################################################################
#
# Function maps
#
################################################################################


def arrgen(typename):
Exemple #5
0
################################################################################

################################################################################
#
#  User-defined IDL function and procedure maps
#
################################################################################

from map import map_var, map_pro, map_func
import idl_maps  ############

#-------------------------------------
#  TopoFlow routines in utils_TF.pro
#-------------------------------------
map_func('TF_String', inpars=[1], noptional=0, inkeys=['FORMAT'])
map_pro('TF_Print', inpars=[1], noptional=0, outpars=[])
map_pro('Clear_Log_Window', inpars=[], outpars=[])
map_pro('Count_Lines', inpars=[2], outpars=[1], inkeys=['SILENT'])
map_func('Current_Directory', inpars=[])
map_func('Resize', inpars=range(1, 6), noptional=2, inkeys=['SAMP_TYPE'])
map_pro('Make_Savefile', inpars=[], outpars=[])
map_pro('Trace_Error', inpars=[1, 2], outpars=[3], inkeys=['ABORT'])
map_pro('Check_Error_Status',
        inpars=[1],
        outpars=[2],
        inkeys=['EVENT_ID', 'TRACEBACK', 'SILENT'])
map_pro('No_Catch', inpars=[], outpars=[1])
map_pro('Read_RTI_Value',
        inpars=[2, 3],
        outpars=[1],
        inkeys=['UPCASE'],
Exemple #6
0
##map_var('vars', '???')
##map_var('repr', '???')

# These don't work, probably due to parentheses.  See below.
# map_var('path_sep()', 'os.sep', 'import os')
# map_var('systime(1)', 'time()', 'import time')

################################################################################
#
# Procedure maps
#
################################################################################

map_pro('CD',
        inpars=[1],
        callfunc=(lambda i, o: 'os.chdir(%s)' % i[0]),
        extracode='import os')
map_pro('ON_ERROR',
        inpars=[1],
        callfunc=(lambda i, o: '# ON_ERROR, %s' % i[0]))
map_pro('PRINT',
        inpars=range(1, 101),
        noptional=99,
        inkeys=['FORMAT'],
        callfunc=(lambda i, o: 'print ' + ', '.join(i)))
map_pro('WAIT',
        inpars=[1],
        callfunc=(lambda i, o: 'time.sleep(%s)' % i[0]),
        extracode='import time')

#--------------------------------------------------