Doxygen Source Code Documentation
thd_dsetinsess.c File Reference
#include "mrilib.h"#include "thd.h"Go to the source code of this file.
| Functions | |
| THD_slist_find | THD_dset_in_session (int find_type, void *target, THD_session *sess) | 
Function Documentation
| 
 | ||||||||||||||||
| 
 Definition at line 15 of file thd_dsetinsess.c. References BADFIND, THD_slist_find::dset, THD_slist_find::dset_index, DSET_PREFIX, THD_session::dsset, EQUIV_IDCODES, FIND_IDCODE, FIND_NAME, FIND_PREFIX, FIRST_VIEW_TYPE, THD_3dim_dataset::idcode, ISVALID_SESSION, ISZERO_IDCODE, LAST_VIEW_TYPE, THD_session::num_dsset, THD_3dim_dataset::self_name, and THD_slist_find::view_index. Referenced by AFNI_drive_switch_anatomy(), AFNI_drive_switch_function(), AFNI_fimmer_compute(), AFNI_rescan_session_NEW(), AFNI_rescan_session_OLD(), DRAW_finalize_dset_CB(), DSET_in_global_session(), process_NIML_Node_ROI(), and THD_dset_in_sessionlist(). 
 00017 {
00018    int id , iv , im ;
00019    THD_3dim_dataset *dset ;
00020    THD_slist_find find ;
00021 
00022    /*-- sanity check --*/
00023 
00024    if( ! ISVALID_SESSION(sess) || target == NULL ){
00025       BADFIND(find) ; return find ;
00026    }
00027 
00028    switch( find_type ){
00029 
00030       /**** search for a name ****/
00031 
00032       case FIND_NAME:{
00033          char *target_name = (char *) target ;
00034          if( strlen(target_name) == 0 ){
00035             BADFIND(find) ; return find ;
00036          }
00037 
00038          for( id=0 ; id < sess->num_dsset ; id++ ){
00039             for( iv=FIRST_VIEW_TYPE ; iv <= LAST_VIEW_TYPE ; iv++ ){
00040                dset = sess->dsset[id][iv] ;
00041 
00042                if( dset != NULL && strcmp(dset->self_name,target_name) == 0 ){
00043                   find.dset = dset ; find.dset_index = id ; find.view_index = iv ;
00044                   return find ;
00045                }
00046             }
00047          }
00048       }
00049       break ;
00050 
00051       /**** search for a prefix ****/
00052 
00053       case FIND_PREFIX:{
00054          char *target_prefix = (char *) target ;
00055          if( strlen(target_prefix) == 0 ){
00056             BADFIND(find) ; return find ;
00057          }
00058 
00059          for( id=0 ; id < sess->num_dsset ; id++ ){
00060             for( iv=FIRST_VIEW_TYPE ; iv <= LAST_VIEW_TYPE ; iv++ ){
00061                dset = sess->dsset[id][iv] ;
00062 
00063                if( dset != NULL && strcmp(DSET_PREFIX(dset),target_prefix) == 0 ){
00064                   find.dset = dset ; find.dset_index = id ; find.view_index = iv ;
00065                   return find ;
00066                }
00067             }
00068          }
00069       }
00070       break ;
00071 
00072       /**** search for an idcode ****/
00073 
00074       case FIND_IDCODE:{
00075          MCW_idcode target_id = *((MCW_idcode *) target) ;
00076 
00077          if( ISZERO_IDCODE(target_id) ){
00078             BADFIND(find) ; return find ;
00079          }
00080 
00081          for( id=0 ; id < sess->num_dsset ; id++ ){
00082             for( iv=FIRST_VIEW_TYPE ; iv <= LAST_VIEW_TYPE ; iv++ ){
00083                dset = sess->dsset[id][iv] ;
00084 
00085                if( dset != NULL && EQUIV_IDCODES(target_id,dset->idcode) ){
00086                   find.dset = dset ; find.dset_index = id ; find.view_index = iv ;
00087                   return find ;
00088                }
00089             }
00090          }
00091       }
00092       break ;
00093 
00094    }  /* end of switch on find_type */
00095 
00096    /*-- fall thru --> not found --*/
00097 
00098    BADFIND(find) ; return find ;
00099 }
 | 
 
                             
                             
                             
                             
                             
                             
                             
                             
                             
                             
                             
                             
 
 
 
 
       
	   
	   
	   
	  