Doxygen Source Code Documentation
        
Main Page   Alphabetical List   Data Structures   File List   Data Fields   Globals   Search   
thd_manydset.c
Go to the documentation of this file.00001 
00002 
00003 
00004 
00005 
00006 
00007 #include "mrilib.h"
00008 #include "thd.h"
00009 
00010 
00011 
00012 
00013 
00014 
00015 THD_3dim_dataset_array *
00016    THD_array_3dim_from_block( THD_datablock_array * blk_arr )
00017 {
00018    THD_3dim_dataset_array * dset_arr ;
00019    THD_3dim_dataset *       dset ;
00020    int id ;
00021    Boolean dset_ok = True , all_anat , all_func ;
00022 
00023 ENTRY("THD_array_3dim_from_block") ;
00024 
00025    INIT_3DARR( dset_arr ) ;
00026 
00027    if( blk_arr == NULL || blk_arr->num <= 0 ) RETURN(dset_arr) ;
00028 
00029    for( id=0 ; id < blk_arr->num ; id++ ){
00030 
00031       dset = THD_3dim_from_block( blk_arr->ar[id] ) ;
00032 
00033       if( dset != NULL ) ADDTO_3DARR( dset_arr , dset ) ;
00034    }
00035 
00036    if( dset_arr->num <= 0 ) RETURN(dset_arr) ;
00037 
00038    
00039    
00040    
00041 
00042    
00043 
00044    all_anat = all_func = True ;
00045    for( id=0 ; id < dset_arr->num ; id++ ){
00046       dset      = dset_arr->ar[id] ;
00047       all_anat  = all_anat && ISANAT(dset) ;
00048       all_func  = all_func && ISFUNC(dset) ;
00049    }
00050    if( !all_anat && !all_func )
00051       DSET_ERR("image type conflicts (ANAT and FUNC mixed)") ;
00052 
00053    SORT_3DARR( dset_arr ) ;
00054 
00055    
00056 
00057    if( all_anat ){
00058    } 
00059 
00060    
00061 
00062    if( all_func ){
00063       THD_3dim_dataset * dset0 ;
00064       int jd ;
00065 
00066 #if 0
00067       
00068 
00069       for( id=0 ; id < dset_arr->num ; id++ ){  
00070          dset = dset_arr->ar[id] ;
00071          if( strlen(dset->anat_parent_name) == 0 )
00072             DSET_WARN("functional image has no anatomical parent!") ;
00073       }
00074 #endif
00075 
00076    } 
00077 
00078    
00079    
00080    
00081 
00082    if( ! dset_ok ){
00083 
00084       
00085 
00086       for( id=0 ; id < dset_arr->num ; id++ ){
00087          THD_delete_3dim_dataset( dset_arr->ar[id] , False ) ;
00088          myXtFree( dset_arr->ar[id] ) ;
00089       }
00090 
00091       FREE_3DARR( dset_arr ) ;
00092       INIT_3DARR( dset_arr ) ;  
00093    }
00094 
00095    
00096 
00097 
00098    RETURN(dset_arr) ;
00099 }