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