1 #ifndef _AFNI_GICOR_ 2 #define _AFNI_GICOR_ 3 4 typedef struct { 5 int ready ; 6 int ndset_A , ndset_B , nvec ; 7 int ttest_opcode , vmul ; 8 float seedrad ; 9 NI_stream ns ; 10 int busy ; /* 18 Mar 2010 */ 11 THD_session *session ; THD_3dim_dataset *dset ; 12 int nds,nvox,nivec,*ivec ; 13 14 char sdset_ID[2][50]; /* ZSS ID codes for surface dsets */ 15 int nnode_domain[2]; /* Number of node in domain for L, and R, surfs */ 16 int nnode_mask[2]; /* number of values on each of L and R surfs. 17 This is only needed when masking is done */ 18 char *brick_labels; /* SUMA's dsets need this outside of init 19 function Jan 2012 */ 20 int nvals; /* Number of values in output dset Jan 2012 */ 21 22 char *label_AAA , *label_BBB , *toplabel ; /* 14 May 2010 */ 23 int num_stat_available ; 24 char **lab_stat_available ; 25 26 unsigned int apair ; /* bit 0 set ==> apair is on */ 27 /* bit 1 set ==> apair has been set properly */ 28 /* bit 2 set ==> apair is to be LR mirrored */ 29 } GICOR_setup ; 30 31 #undef FREEIFNN 32 #define FREEIFNN(x) do{ if((x)!=NULL) free((void *)(x)); } while(0) 33 34 #define GICOR_set_apair_allow_bit(gi) (gi)->apair |= 1u 35 #define GICOR_set_apair_ready_bit(gi) (gi)->apair |= 2u 36 #define GICOR_set_apair_mirror_bit(gi) (gi)->apair |= 4u 37 38 #define GICOR_unset_apair_allow_bit(gi) (gi)->apair &= ~1u 39 #define GICOR_unset_apair_ready_bit(gi) (gi)->apair &= ~2u 40 #define GICOR_unset_apair_mirror_bit(gi) (gi)->apair &= ~4u 41 42 #define GICOR_flip_apair_allow_bit(gi) (gi)->apair ^= 1u 43 #define GICOR_flip_apair_ready_bit(gi) (gi)->apair ^= 2u 44 #define GICOR_flip_apair_mirror_bit(gi) (gi)->apair ^= 4u 45 46 #define GICOR_apair_allow_bit(gi) (((gi)->apair & 1u) != 0) 47 #define GICOR_apair_ready_bit(gi) (((gi)->apair & 2u) != 0) 48 #define GICOR_apair_mirror_bit(gi) (((gi)->apair & 4u) != 0) 49 50 #define DESTROY_GICOR_setup(gi) \ 51 do{ if( (gi) != NULL ){ \ 52 int zz ; \ 53 FREEIFNN((gi)->ivec) ; \ 54 FREEIFNN((gi)->label_AAA) ; \ 55 FREEIFNN((gi)->label_BBB) ; \ 56 FREEIFNN((gi)->toplabel) ; \ 57 if( (gi)->lab_stat_available != NULL ){ \ 58 for( zz=0 ; zz < (gi)->num_stat_available ; zz++ ) \ 59 free((gi)->lab_stat_available[zz]) ; \ 60 free((gi)->lab_stat_available) ; \ 61 } \ 62 free(gi) ; (gi) = NULL ; \ 63 } } while(0) 64 65 #endif 66