00001 #ifndef _AFNI_AMALLOC_HEADER_
00002 #define _AFNI_AMALLOC_HEADER_
00003 
00004 
00005 
00006 
00007 
00008 
00009 
00010 
00011 
00012 #define AFMALL(typ,siz)    (typ*) calloc(1,siz)
00013 
00014 
00015 
00016 
00017 #define AFREALL(v,typ,siz) (typ*) realloc((void*)v,sizeof(typ)*(siz))
00018 
00019 
00020 
00021 
00022 #define AFFREE(v)          free((void*)v)
00023 
00024 
00025 
00026 
00027 
00028 #define AFNI_CALL_0D_function(func,nar,far)                     \
00029  do{ void (*fp)(int,float *) = (void (*)(int,float *))(func) ;  \
00030      if( fp != NULL )                                           \
00031       fp( (nar) , (far) ) ;                                     \
00032  } while(0)
00033 
00034 
00035 
00036 
00037 
00038 #define AFNI_CALL_1D_function(func,nar,d1,d2,far)               \
00039  do{ void (*fp)(int,double,double,float *) =                    \
00040       (void (*)(int,double,double,float *))(func) ;             \
00041      if( fp != NULL )                                           \
00042       fp(nar,(double)d1,(double)d2,far) ;                       \
00043  } while(0)
00044 
00045 
00046 
00047 
00048 
00049 
00050 #define AFNI_CALL_1D_funcstr(func,nar,d1,d2,far,str)            \
00051  do{ void (*fp)(int,double,double,float *,char **) =            \
00052       (void (*)(int,double,double,float *,char**))(func) ;      \
00053      if( fp != NULL )                                           \
00054       fp(nar,(double)d1,(double)d2,far,(char **)&(str)) ;       \
00055  } while(0)
00056 
00057 
00058 
00059 
00060 
00061 #define AFNI_CALL_1D_funcmrim(func,mage)                        \
00062  do{ void (*fp)(MRI_IMAGE *) = (void (*)(MRI_IMAGE *))(func) ;  \
00063      if( fp != NULL )                                           \
00064       fp(mage) ;                                                \
00065  } while(0)
00066 
00067 
00068 
00069 
00070 
00071 
00072 #define AFNI_CALL_1D_funcmrimstr(func,mage,str)                 \
00073  do{ void (*fp)(MRI_IMAGE *,char **) =                          \
00074       (void (*)(MRI_IMAGE *,char **))(func) ;                   \
00075      if( fp != NULL )                                           \
00076       fp(mage,(char **)&(str)) ;                                \
00077  } while(0)
00078 
00079 
00080 
00081 
00082 
00083 #define AFNI_CALL_2D_function(func,n1,n2,d1,d2,far)             \
00084  do{ void (*fp)(int,int,double,double,float *) =                \
00085       (void (*)(int,int,double,double,float *))(func) ;         \
00086      if( fp != NULL )                                           \
00087       fp( (n1),(n2),(double)(d1),(double)(d2),far ) ;           \
00088  } while(0)
00089 
00090 
00091 
00092 
00093 
00094 
00095 #define AFNI_CALL_proj_function(func,n,far,val)                 \
00096  do{ float (*fp)(int,float *) = (float (*)(int,float *))(func); \
00097      if( fp != NULL ) (val) = fp(n,far) ;                       \
00098  } while(0)
00099 
00100 
00101 
00102 
00103 
00104 #define AFNI_CALL_fim_function(func,n,ts,ud,nb,vv)             \
00105  do{ void (*fp)(int,float *,void *,int,void *) =               \
00106       (void (*)(int,float *,void *,int,void *))(func) ;        \
00107      if( fp != NULL )                                          \
00108        fp(n,ts,(void *)(ud),nb,(void *)(vv)) ;                 \
00109  } while(0)
00110 
00111 
00112 
00113 
00114 
00115 
00116 
00117 
00118 #define AFNI_CALL_VOID_1ARG(func,typ1,arg1)                   \
00119  do{ void (*fp)(typ1) = (void (*)(typ1))(func) ;              \
00120      if( fp != NULL )                                         \
00121       fp((typ1)(arg1)) ;                                      \
00122  } while(0)
00123 
00124 
00125 #define AFNI_CALL_VALU_1ARG(func,vtyp,vval,typ1,arg1)         \
00126  do{ vtyp (*fp)(typ1) = (vtyp (*)(typ1))(func) ;              \
00127      if( fp != NULL )                                         \
00128       (vval) = fp((typ1)(arg1)) ;                             \
00129  } while(0)
00130 
00131 
00132 #define AFNI_CALL_VOID_2ARG(func,typ1,arg1,typ2,arg2)        \
00133  do{ void (*fp)(typ1,typ2) = (void (*)(typ1,typ2))(func) ;   \
00134      if( fp != NULL )                                        \
00135       fp((typ1)(arg1),(typ2)(arg2)) ;                        \
00136  } while(0)
00137 
00138 
00139 #define AFNI_CALL_VALU_2ARG(func,vtyp,vval,typ1,arg1,typ2,arg2) \
00140  do{ vtyp (*fp)(typ1,typ2) = (vtyp (*)(typ1,typ2))(func) ;      \
00141      if( fp != NULL )                                           \
00142       (vval) = fp((typ1)(arg1),(typ2)(arg2)) ;                  \
00143  } while(0)
00144 
00145 
00146 #define AFNI_CALL_VOID_3ARG(func,typ1,arg1,typ2,arg2,typ3,arg3)      \
00147  do{ void (*fp)(typ1,typ2,typ3) = (void (*)(typ1,typ2,typ3))(func) ; \
00148      if( fp != NULL )                                                \
00149       fp((typ1)(arg1),(typ2)(arg2),(typ3)(arg3)) ;                   \
00150  } while(0)
00151 
00152 
00153 #define AFNI_CALL_VALU_3ARG(func,vtyp,vval,typ1,arg1,typ2,arg2,typ3,arg3) \
00154  do{ vtyp (*fp)(typ1,typ2,typ3) = (vtyp (*)(typ1,typ2,typ3))(func) ;      \
00155      if( fp != NULL )                                                     \
00156       (vval) = fp((typ1)(arg1),(typ2)(arg2),(typ3)(arg3)) ;               \
00157  } while(0)
00158 
00159 
00160 #define AFNI_CALL_VOID_4ARG(func,typ1,arg1,typ2,arg2,typ3,arg3,typ4,arg4)     \
00161  do{ void (*fp)(typ1,typ2,typ3,typ4) = (void (*)(typ1,typ2,typ3,typ4))(func); \
00162      if( fp != NULL )                                                         \
00163       fp((typ1)(arg1),(typ2)(arg2),(typ3)(arg3),(typ4)(arg4)) ;               \
00164  } while(0)
00165 
00166 
00167 #define AFNI_CALL_VALU_4ARG(func,vtyp,vval,typ1,arg1,typ2,arg2,typ3,arg3,typ4,arg4) \
00168  do{ vtyp (*fp)(typ1,typ2,typ3,typ4) = (vtyp (*)(typ1,typ2,typ3,typ4))(func) ;      \
00169      if( fp != NULL )                                                               \
00170       (vval) = fp((typ1)(arg1),(typ2)(arg2),(typ3)(arg3),(typ4)(arg4)) ;            \
00171  } while(0)
00172 
00173 
00174 #define AFNI_CALL_VOID_7ARG(func,typ1,arg1,typ2,arg2,typ3,arg3,typ4,arg4,typ5,arg5,typ6,arg6,typ7,arg7) \
00175  do{ void (*fp)(typ1,typ2,typ3,typ4,typ5,typ6,typ7) = (void (*)(typ1,typ2,typ3,typ4,typ5,typ6,typ7))(func) ;      \
00176      if( fp != NULL )                                                               \
00177       fp((typ1)(arg1),(typ2)(arg2),(typ3)(arg3),(typ4)(arg4),(typ5)(arg5),(typ6)(arg6),(typ7)(arg7)) ;            \
00178  } while(0)
00179 
00180 
00181 #endif