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 }