Doxygen Source Code Documentation
thd_checkidc.c File Reference
#include "mrilib.h"
#include "thd.h"
Go to the source code of this file.
Functions | |
void | THD_check_idcodes (THD_sessionlist *ssl) |
Function Documentation
|
Definition at line 16 of file thd_checkidc.c. References DSET_HEADNAME, THD_session::dsset, DUPLICATE_DSETS, ENTRY, FIRST_VIEW_TYPE, free, ISVALID_DSET, ISVALID_SESSIONLIST, LAST_VIEW_TYPE, malloc, THD_session::num_dsset, THD_sessionlist::num_sess, and THD_sessionlist::ssar. Referenced by AFNI_read_inputs().
00017 { 00018 int iss , idd,jdd , ivv , dsnum , nd ; 00019 THD_session * sess ; 00020 THD_3dim_dataset * dset , ** dsl ; 00021 00022 ENTRY("THD_check_idcodes") ; 00023 00024 /*-- sanity check --*/ 00025 00026 if( ! ISVALID_SESSIONLIST(ssl) || ssl->num_sess <= 0 ) EXRETURN ; 00027 00028 /*-- count number of datasets --*/ 00029 00030 for( dsnum=iss=0 ; iss < ssl->num_sess ; iss++ ){ 00031 sess = ssl->ssar[iss] ; 00032 for( idd=0 ; idd < sess->num_dsset ; idd++ ){ 00033 for( ivv=FIRST_VIEW_TYPE ; ivv <= LAST_VIEW_TYPE ; ivv++ ){ 00034 dset = sess->dsset[idd][ivv] ; 00035 if( ISVALID_DSET(dset) ) dsnum++ ; 00036 } 00037 } 00038 } 00039 00040 /*-- make list of datasets --*/ 00041 00042 dsl = (THD_3dim_dataset **) malloc( sizeof(THD_3dim_dataset *) * dsnum ) ; 00043 00044 for( nd=iss=0 ; iss < ssl->num_sess ; iss++ ){ 00045 sess = ssl->ssar[iss] ; 00046 for( idd=0 ; idd < sess->num_dsset ; idd++ ){ 00047 for( ivv=FIRST_VIEW_TYPE ; ivv <= LAST_VIEW_TYPE ; ivv++ ){ 00048 dset = sess->dsset[idd][ivv] ; 00049 if( ISVALID_DSET(dset) ) dsl[nd++] = dset ; 00050 } 00051 } 00052 } 00053 00054 /*-- check list for duplicates --*/ 00055 00056 for( iss=idd=0 ; idd < dsnum-1 ; idd++ ){ 00057 nd = 0 ; 00058 for( jdd=idd+1 ; jdd < dsnum ; jdd++ ){ 00059 if( DUPLICATE_DSETS(dsl[idd],dsl[jdd]) ){ /* 20 Dec 2001: change EQUIV_IDCODES() to DUPLICATE_DSETS() */ 00060 fprintf(stderr, 00061 "\n*** WARNING: Identical ID codes in %s and %s", 00062 DSET_HEADNAME(dsl[idd]) , DSET_HEADNAME(dsl[jdd]) ) ; 00063 iss++ ; 00064 } 00065 } 00066 } 00067 00068 if( iss > 0 ) fprintf(stderr,"\n") ; 00069 00070 free(dsl) ; EXRETURN ; 00071 } |