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 } |