dustem_init_plugins.pro 2.99 KB
PRO dustem_init_plugins, pd


;INITIALIZING THE SCOPES DATA ARRAYS--------------------

varvar=create_struct('varvar',ptr_new())

plugin_names=['']
plugind_detect_string='dustem_create'
for i=0L,n_elements(pd)-1 do begin
    fi=strtrim(strmid(pd(i),0,strlen(plugind_detect_string)),2)
    if fi eq plugind_detect_string then begin
        ftn = strmid((*(*!dustem_fit).param_descs)(i),0) ; String containing the name of the plugin and the keyword used (ie: dustem_create_continuum_2)    
        ii = strsplit(ftn,'_',count=countx)
        ii = ii(countx-1)-1 ; Locating the last underscore to automate the extraction of the plugin's keyword
        ftn = strmid(ftn,14,ii-14) ; String containing the name of the plugin without the associated keyword
        plugin_names=[plugin_names,ftn]
    ENDIF
ENDFOR
plugin_names=plugin_names[1:*]
order=sort(plugin_names)
plugin_names=plugin_names[order]
un=uniq(plugin_names)
plugin_names=plugin_names[un]
Npluggins=n_elements(plugin_names)

IF Npluggins NE 0 THEN BEGIN

    varvar=create_struct(plugin_names,ptr_new())
    defsysv, '!dustem_scope', ptr_new(varvar)
ENDIF ELSE BEGIN

ENDELSE

defsysv, '!dustem_scope', ptr_new(varvar)

for i=0L,n_elements(pd)-1 do begin

    fi=strtrim(strmid(pd(i),0,13),2)

    test=(n_tags(varvar) eq 1 && tag_exist(varvar,'varvar'))

    if fi eq 'dustem_create' then begin
        stop
        ftn = strmid((*(*!dustem_fit).param_descs)(i),0) ; String containing the name of the plugin and the keyword used (ie: dustem_create_continuum_2)    
        ii = strsplit(ftn,'_',count=countx)
        ii = ii(countx-1)-1 ; Locating the last underscore to automate the extraction of the plugin's keyword
        ftn = strmid(ftn,14,ii-14) ; String containing the name of the plugin without the associated keyword
        plugin_name=ftn

        fii=strtrim(strmid(pd(i),14,4),2)

        j=0L
        if i eq 0 then j=2
        if i eq n_elements(pd)-1 then j=1

        trl=fii eq strtrim(strmid(pd(i+j-1),14,4),2)

        if i eq 0 && trl then trl=0 else trl=fii eq strtrim(strmid(pd(i+j-1),14,4),2)


        if test && (~trl) then varvar=create_struct(plugin_name,ptr_new())
        if (~test) && (~trl) then varvar=create_struct(varvar,plugin_name,ptr_new())


    endif

endfor


test=(n_tags(varvar) eq 1 && tag_exist(varvar,'varvar'))  
if test then varvar=create_struct('varvar','ERROR IN DUSTEM_INIT_PLUGINS!')

defsysv, '!dustem_scope', ptr_new(varvar)
;---------------------------------------------

                                                                                                         
;INITIALIZING THE PLUGIN DATA ARRAYS----------
tgnms=tag_names(varvar)

for i=0L, n_tags(varvar)-1 do begin

    if i eq 0 then strct= create_struct(tgnms(i),ptr_new())
    if i ge 1 then strct= create_struct(strct, tgnms(i),ptr_new())
endfor

defsysv, '!dustem_plugin', ptr_new(strct)  ; structure that will contain the spectra associated to each plugin ; how do I insert a whole structure as a fucking tag? 
;---------------------------------------------

end