;+
;PROCEDURE: add_all
;PURPOSE:
; adds user defined structure elements to the 3d structures.
;USAGE:
; add_all,dat,add
;INPUT:
; dat: A (3d) data structure.
; add: a structure such as: {vsw:'Vp' , magf:'B3', sc_pos:'pos'}
;RESULTS:
; for the above example, the elements, vsw, magf, and sc_pos are
; added to the dat structure. The values are obtained from the tplot
; variables 'Vp', 'B3' and 'pos' respectively.
;-
pro add_all,dat,add
if data_type(add) ne 8 then return
n = n_tags(add)
names = tag_names(add)
for i=0,n-1 do begin
source = add.(i)
;print,"Obtaining: ",names(i)," Using: ",source
if data_type(source) eq 7 then begin
case strmid(source,0,2) of
'f:': begin
val = call_function(strmid(source,2,40),dat)
add_str_element,dat,names(i),val
end
'p:': call_procedure,strmid(source,2,40),dat
's:': add_str_element,dat,names(i),strmid(source,2,40)
else: begin
val = data_cut(source,(dat.time+dat.end_time)/2.)
add_str_element,dat,names(i),val
end
endcase
endif else $
add_str_element,dat,names(i),source
endfor
end