/*****************************************************************************
Major portions of this software are copyrighted by the Medical College
of Wisconsin, 1994-2000, and are released under the Gnu General Public
License, Version 2. See the file README.Copyright for details.
******************************************************************************/
#include "mrilib.h"
#include "thd.h"
/*-----------------------------------------------------------------
Find a dataset with a given name in a session
[28 Jul 2003] Modified for new THD_session struct.
-------------------------------------------------------------------*/
THD_slist_find THD_dset_in_session( int find_type , void *target ,
THD_session *sess )
{
int id , iv , im ;
THD_3dim_dataset *dset ;
THD_slist_find find ;
/*-- sanity check --*/
if( ! ISVALID_SESSION(sess) || target == NULL ){
BADFIND(find) ; return find ;
}
switch( find_type ){
/**** search for a name ****/
case FIND_NAME:{
char *target_name = (char *) target ;
if( strlen(target_name) == 0 ){
BADFIND(find) ; return find ;
}
for( id=0 ; id < sess->num_dsset ; id++ ){
for( iv=FIRST_VIEW_TYPE ; iv <= LAST_VIEW_TYPE ; iv++ ){
dset = sess->dsset[id][iv] ;
if( dset != NULL && strcmp(dset->self_name,target_name) == 0 ){
find.dset = dset ; find.dset_index = id ; find.view_index = iv ;
return find ;
}
}
}
}
break ;
/**** search for a prefix ****/
case FIND_PREFIX:{
char *target_prefix = (char *) target ;
if( strlen(target_prefix) == 0 ){
BADFIND(find) ; return find ;
}
for( id=0 ; id < sess->num_dsset ; id++ ){
for( iv=FIRST_VIEW_TYPE ; iv <= LAST_VIEW_TYPE ; iv++ ){
dset = sess->dsset[id][iv] ;
if( dset != NULL && strcmp(DSET_PREFIX(dset),target_prefix) == 0 ){
find.dset = dset ; find.dset_index = id ; find.view_index = iv ;
return find ;
}
}
}
}
break ;
/**** search for an idcode ****/
case FIND_IDCODE:{
MCW_idcode target_id = *((MCW_idcode *) target) ;
if( ISZERO_IDCODE(target_id) ){
BADFIND(find) ; return find ;
}
for( id=0 ; id < sess->num_dsset ; id++ ){
for( iv=FIRST_VIEW_TYPE ; iv <= LAST_VIEW_TYPE ; iv++ ){
dset = sess->dsset[id][iv] ;
if( dset != NULL && EQUIV_IDCODES(target_id,dset->idcode) ){
find.dset = dset ; find.dset_index = id ; find.view_index = iv ;
return find ;
}
}
}
}
break ;
} /* end of switch on find_type */
/*-- fall thru --> not found --*/
BADFIND(find) ; return find ;
}
syntax highlighted by Code2HTML, v. 0.9.1