📄 tag_exist.pro
字号:
;+; NAME: ; TAG_EXIST(); PURPOSE: ; To test whether a tag name exists in a structure.; EXPLANATION: ; Routine obtains a list of tagnames and tests whether the requested one; exists or not. The search is recursive so if any tag names in the ; structure are themselves structures the search drops down to that level.; (However, see the keyword TOP_LEVEL).; ; CALLING SEQUENCE: ; status = TAG_EXIST(str, tag, [ INDEX =, /TOP_LEVEL, /QUIET ] ); ; INPUT PARAMETERS: ; str - structure variable to search; tag - tag name to search for, scalar string;; OUTPUTS:; Function returns 1b if tag name exists or 0b if it does not.; ; OPTIONAL INPUT KEYWORD:; /TOP_LEVEL = If set, then only the top level of the structure is; searched.; /QUIET - if set, then do not print messages if invalid parameters given; /RECURSE - does nothing but kept for compatibility with the; Solarsoft version for which recursion is not the default ; http://sohowww.nascom.nasa.gov/solarsoft/gen/idl/struct/tag_exist.pro; OPTIONAL OUTPUT KEYWORD:; INDEX = index of matching tag, scalar longward, -1 if tag name does; not exist;; EXAMPLE:; Determine if the tag 'THICK' is in the !P system variable; ; IDL> print,tag_exist(!P,'THICK');; PROCEDURE CALLS:; None.;; MODIFICATION HISTORY: : ; Written, C D Pike, RAL, 18-May-94 ; Passed out index of matching tag, D Zarro, ARC/GSFC, 27-Jan-95 ; William Thompson, GSFC, 6 March 1996 Added keyword TOP_LEVEL; Zarro, GSFC, 1 August 1996 Added call to help ; Use SIZE(/TNAME) rather than DATATYPE() W. Landsman October 2001; Added /RECURSE and /QUIET for compatibility with Solarsoft version; W. Landsman March 2009;- function tag_exist, str, tag,index=index, top_level=top_level,recurse=recurse, $ quiet=quiet;; check quantity of input;if n_params() lt 2 then begin print,'Use: status = tag_exist(structure, tag_name)' return,0bendif;; check quality of input;if size(str,/TNAME) ne 'STRUCT' or size(tag,/TNAME) ne 'STRING' then begin if not keyword_set(quiet) then begin if size(str,/TNAME) ne 'STRUCT' then help,str if size(tag,/TNAME) ne 'STRING' then help,tag print,'Use: status = tag_exist(str, tag)' print,'str = structure variable' print,'tag = string variable' endif return,0bendifi=-1tn = tag_names(str)nt = where(tn eq strupcase(tag)) & index=nt[0]if nt[0] eq -1 then begin status = 0b if not keyword_set(top_level) then begin for i=0,n_elements(tn)-1 do begin if size(str.(i),/TNAME) eq 'STRUCT' then $ status=tag_exist(str.(i),tag,index=index) if status eq 1b then return,status endfor endif return,0bendif else begin return,1bendelseend
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -