⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 findpro.pro

📁 basic median filter simulation
💻 PRO
字号:
pro FindPro, Proc_Name, NoPrint=NoPrint, DirList=DirList, ProList=ProList;+; NAME:;     FINDPRO; PURPOSE:;     Find all locations of a procedure in the IDL !PATH; EXPLANATION:;     FINDPRO searces for the procedure name (as a .pro or a .sav file) in all ;     IDL libraries or directories given in the !PATH system variable.    This;     differs from the intrinsic FILE_WHICH() function which only finds the ;     first occurence of the procedure name.;               ; CALLING SEQUENCE:;    FINDPRO, [ Proc_Name, /NoPrint, DirList = , ProList = ];; OPTIONAL INPUT:;     Proc_Name - Character string giving the name of the IDL procedure or ;             function. Do not include the ".pro" extension. If Proc_Name is;             omitted, the program will prompt for PROC_NAME.  "*" wildcards;             are permitted.;; OPTIONAL KEYWORD INPUT:;     /NoPrint - if set, then the file's path is not printed on the screen and;             absolutely no error messages are printed on the screen.  If not;             set, then - since the MESSAGE routine is used - error messages ;             will be printed but the printing of informational messages;             depends on the value of the !Quiet variable.;; OPTIONAL KEYWORD OUTPUTS:;     DirList - The directories in which the file is located are returned in;             the keyword as a string array.;             If the procedure is an intrinsic IDL procedure, then the ;             value of DirList = ['INTRINSIC'].;             If the procedure is not found, the value of DirList = [''].;     ProList - The list (full pathnames) of procedures found.  Useful if you;             are looking for the name of a procedure using wildcards.;;     The order of the names in DirList and ProList is identical to the order;     in which the procedure name appears in the !PATH; PROCEDURE:;     The system variable !PATH is parsed using EXPAND_PATH into individual ;     directories.  FILE_SEARCH() is used to search the directories for;     the procedure name.  If not found in !PATH, then the name is compared ;     with the list of intrinsic IDL procedures given by the ROUTINE_INFO();     function. ;; EXAMPLE:;     (1) Find the procedure CURVEFIT.  Assume for this example that the user;     also has a copy of the curvefit.pro procedure in her home directory;     on a Unix machine.;;       IDL> findpro, 'curvefit', DIRLIST=DirList;       Procedure curvefit.pro found in directory  /home/user/.;       Procedure curvefit.pro found in directory  /home/idl/lib/userlib ;       IDL> help, DirList;       DIRLIST         STRING    = Array(2) ;       IDL> help, DirList[0], DirList[1];       <Expression>    STRING    = '/home/user';       <Expression>    STRING    = '/home/idl/lib/userlib' ;;     (2) Find all procedures in one's !path containing the characters "zoom" ;;       IDL> findpro,'*zoom*'; RESTRICTIONS:;       User will be unable to find a path for a native IDL function;       or procedure, or for a FORTRAN or C routine added with CALL_EXTERNAL.;       Remember that Unix is case sensitive, and most procedures will be in;       lower case.;; PROCEDURES USED:;       ZPARCHECK, FDECOMP; REVISION HISTORY:;       Based on code extracted from the GETPRO procedure, J. Parker 1994;       Use the intrinsic EXPAND_PATH function    W. Landsman Nov. 1994;       Use ROUTINE_NAMES() to check for intrinsic procs   W. Landsman Jul 95;       Added Macintosh, WINDOWS compatibility    W. Landsman   Sep. 95;       Removed spurious first element in PROLIST  W. Landsman  March 1997;       Don't include duplicate directories  in !PATH  WL   May 1997;       Use ROUTINE_INFO instead of undocumented ROUTINE_NAMES W.L. October 1998;       Also check for save sets   W. Landsman  October 1999 ;       Force lower case check for VMS  W. Landsman January 2000 ;       Only return .pro or .sav files in PROLIST   W. Landsman  January 2002 ;       Force lower case check for .pro and .sav    D. Swain  September 2002 ;       Use FILE_SEARCH() if V5.5 or later   W. Landsman June 2006;       Assume since V55, remove VMS support W. Landsman Sep. 2006;;-;/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/ On_error,2                           ;Return to caller on error compile_opt idl2 if (N_params() EQ 0) then begin      ;Prompt for procedure name?   Proc_Name = ' '    read,'Enter name of procedure for which you want the path: ',Proc_Name endif else zparcheck, 'getpro', Proc_Name, 1, 7, 0, 'Procedure name' NoPrint = keyword_set(NoPrint) fdecomp, Proc_Name, Disk, Dir, Name      ;Don't want file extensions Name = strtrim( Name, 2 )  ; Set up separate file and directory separators for current OS psep = path_sep() pathdir = expand_path(!PATH,/ARRAY, Count = N_dir) cd,current = dir ; Remove duplicate directories  in !PATH but keep original order path_dir = [dir] for i = 0,N_dir -1 do begin      test = where(path_dir EQ pathdir[i], Ndup)      if Ndup EQ 0 then path_dir = [path_dir,pathdir[i]] endfor N_dir = N_elements(path_dir); Use FILE_PATH() to search all directories for <name>.pro or <name>.sav files    ProList = file_search(path_dir + psep + name + '.{pro,sav}', COUNT=Nfile)           if (Nfile ge 1) then begin                     ;Found by FILE_SEARCH?       fdecomp, ProList, ddisk,ddir,fname,ext       dirlist = ddisk + ddir        found = 1b       for j = 0,nfile-1 do begin          case strlowcase(ext[j]) of 	 'pro':  message,/Con,  NoPrint = NoPrint,/NoPrefix, /Noname, $                 'Procedure ' + fname[j] + ' found in directory  ' + dirlist[j]         'sav':  message,/Con,NoPrint = NoPrint,/NoPrefix, /Noname, $                'Save set ' + fname[j] + '.sav found in directory  ' + dirlist[j]	 endcase	          endfor     endif  else begin                ; At this point !PATH has been searched.  If the procedure was not found; check if it is an intrinsic IDL procedure or function   funcnames = routine_info(/system,/func)  test = where ( funcnames EQ strupcase(name), fcount)  funcnames = routine_info(/system)  test = where ( funcnames EQ strupcase(name), pcount)   if (fcount EQ 0) and (pcount EQ 0) then begin        prolist = strarr(1)  	dirlist = strarr(1)       if not(NoPrint) then begin         message, 'Procedure '+Name+' not found in a !PATH directory.', /CONT         message, 'Check your spelling or search individual directories.', /INF      endif   endif else begin       DirList = ['INTRINSIC']      ProList = ['INTRINSIC']      if not(NoPrint) then begin         message, 'Procedure ' + Name + ' is an intrinsic IDL procedure.', /CONT         message, 'No path information available.', /INF      endif   endelse endelse   return end   

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -