00001
00002
00003
00004
00005
00006
00007
00008
00009
00023 #if defined(__cplusplus) && defined(ANSI_HDRS)
00024 #include <cstdio>
00025 #include <cstdlib>
00026 #else
00027 #include <stdio.h>
00028 #include <stdlib.h>
00029 #endif
00030 #include "_generic.h"
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041
00042 #define fvector(nl, nh) \
00043 (float *) generic_make_vector(nl,nh,sizeof(float))
00044 #define ivector(nl, nh) \
00045 (int *) generic_make_vector(nl,nh,sizeof(int))
00046 #define dvector(nl, nh) \
00047 (double *) generic_make_vector(nl,nh,sizeof(double))
00048 #define fmatrix(nrl, nrh, ncl, nch) \
00049 (float **) generic_make_matrix(nrl,nrh,ncl,nch,sizeof(float))
00050 #define imatrix(nrl, nrh, ncl, nch) \
00051 (int **) generic_make_matrix(nrl,nrh,ncl,nch,sizeof(int))
00052 #define dmatrix(nrl, nrh, ncl, nch) \
00053 (double **) generic_make_matrix(nrl,nrh,ncl,nch,sizeof(double))
00054 #define farray(nrl, nrh, ncl, nch, nzl, nzh) \
00055 (float ***) generic_make_array(nrl,nrh,ncl,nch,nzl,nzh, \
00056 sizeof(float))
00057 #define iarray(nrl, nrh, ncl, nch, nzl, nzh) \
00058 (int ***) generic_make_array(nrl,nrh,ncl,nch,nzl,nzh, \
00059 sizeof(int))
00060 #define darray(nrl, nrh, ncl, nch, nzl, nzh) \
00061 (double ***) generic_make_array(nrl,nrh,ncl,nch,nzl,nzh, \
00062 sizeof(double))
00063
00064
00065
00066
00067
00068
00069
00070
00071
00072
00073 #define free_fvector(v, nl, nh) \
00074 generic_free_vector((VOID *) v,nl,nh,sizeof(float))
00075 #define free_ivector(v, nl, nh) \
00076 generic_free_vector((VOID *) v,nl,nh,sizeof(int))
00077 #define free_dvector(v, nl, nh) \
00078 generic_free_vector((VOID *) v,nl,nh,sizeof(double))
00079 #define free_fmatrix(v, nrl, nrh, ncl, nch) \
00080 generic_free_matrix((VOID **) v,nrl,nrh, ncl, nch,sizeof(float))
00081 #define free_imatrix(v, nrl, nrh, ncl, nch) \
00082 generic_free_matrix((VOID **) v,nrl,nrh, ncl, nch,sizeof(int))
00083 #define free_dmatrix(v, nrl, nrh, ncl, nch) \
00084 generic_free_matrix((VOID **) v,nrl,nrh,ncl, nch,sizeof(double))
00085 #define free_farray(v, nrl, nrh, ncl, nch, nzl, nzh) \
00086 generic_free_array((VOID ***) v,nrl,nrh, ncl, nch,nzl,nzh,\
00087 sizeof(float))
00088 #define free_iarray(v, nrl, nrh, ncl, nch, nzl, nzh) \
00089 generic_free_array((VOID ***) v,nrl,nrh, ncl, nch,nzl,nzh,\
00090 sizeof(int))
00091 #define free_darray(v, nrl, nrh, ncl, nch, nzl, nzh) \
00092 generic_free_array((VOID ***) v,nrl,nrh, ncl,nch,nzl,nzh,\
00093 sizeof(double))
00094
00095
00096
00097
00098 #define transpose_fmatrix(m, nrl, nrh, ncl, nch) \
00099 (float **) generic_transpose_matrix((VOID **) m,nrl,nrh, ncl, nch,\
00100 sizeof(float))
00101 #define transpose_imatrix(m, nrl, nrh, ncl, nch) \
00102 (int **) generic_transpose_matrix((VOID **) m,nrl,nrh, ncl, nch,\
00103 sizeof(int))
00104 #define transpose_dmatrix(m, nrl, nrh, ncl, nch) \
00105 (double **) generic_transpose_matrix((VOID **)m,nrl,nrh, ncl, nch,\
00106 sizeof(double))
00107
00108
00109
00112 #if defined(__cplusplus)
00113 extern "C" {
00114 #endif
00115 #if defined(__STDC__) || defined(__cplusplus)
00116 VOID *generic_make_vector(int nl, int nh, unsigned size);
00117 VOID **generic_make_matrix(int nrl, int nrh, int ncl, int nch,
00118 unsigned size);
00119 VOID ***generic_make_array(int nrl, int nrh, int ncl, int nch, int nzl,
00120 int nzh, unsigned size);
00121 void generic_free_vector(char* v, int nl, int nh, unsigned size);
00122 void generic_free_matrix(char** v, int nrl, int nrh, int ncl, int nch,
00123 unsigned size);
00124 void generic_free_array(char*** v, int nrl, int nrh, int ncl, int nch,
00125 int nzl, unsigned size);
00126 VOID **generic_transpose_matrix(VOID **matrix, int nrl, int nrh, int ncl,
00127 int nch, unsigned size);
00128 int print_ivector(int* v, int nl, int nh, FILE* fp);
00129 int print_fvector(float* v, int nl, int nh, FILE* fp);
00130 int print_dvector(double* v, int nl, int nh, FILE* fp);
00131 int print_imatrix(int** v, int nrl, int nrh, int ncl, int nch, FILE* fp);
00132 int print_fmatrix(float** v, int nrl, int nrh, int ncl, int nch, FILE* fp);
00133 int print_dmatrix(double** v, int nrl, int nrh, int ncl, int nch, FILE* fp);
00134 int print_farray(float*** v, int nrl, int nrh, int ncl, int nch, int nzl,
00135 int nzh, FILE* fp);
00136 int read_ivector(int* v, int nl, int nh, FILE* fp);
00137 int read_dvector(double* v, int nl, int nh, FILE* fp);
00138 int read_fvector(float* v, int nl, int nh, FILE* fp);
00139 int read_dmatrix(double** v, int nrl, int nrh, int ncl, int nch, FILE* fp);
00140 #else
00141 extern VOID *generic_make_vector();
00142 extern VOID **generic_make_matrix();
00143 extern VOID ***generic_make_array();
00144 extern void generic_free_vector();
00145 extern void generic_free_matrix();
00146 extern void generic_free_array();
00147 extern VOID **generic_transpose_matrix();
00148 extern int print_ivector();
00149 extern int print_fvector();
00150 extern int print_dvector();
00151 extern int print_imatrix();
00152 extern int print_fmatrix();
00153 extern int print_dmatrix();
00154 extern int print_farray();
00155 extern int read_ivector();
00156 extern int read_dvector();
00157 extern int read_fvector();
00158 extern int read_dmatrix();
00159 #endif
00160 #ifdef __cplusplus
00161 };
00162 #endif
00163
00164 #ifndef __cplusplus
00165 #define new(type) (type *) malloc((size_t) sizeof( type ))
00166 #define new_array(type, n) (type*) malloc((size_t) sizeof(type)*n)
00167 #endif
00168
00169