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