CCEX-1.0.0
Loading...
Searching...
No Matches
memory.h
1#ifndef __CCEX_MEMORY_H_
2#define __CCEX_MEMORY_H_
3
4#ifndef __CCEX_UTILITIES_H_
5 #include "utilities.h"
6#endif
7
8// what to do : copy, alloc, realloc, free
9
10/* Memory control for each type ----------------------------*/
11
12// int
13int* allocInt1d(size_t m);
14int** allocInt2d(size_t m, size_t n);
15int*** allocInt3d(size_t m, size_t n, size_t l);
16
17void reallocInt1d(int **ptr, size_t newrow);
18void reallocInt2d(int ***ptr, size_t oldrow, size_t newrow, size_t col);
19void reallocInt3d(int ****ptr, size_t oldrow, size_t newrow, size_t col1, size_t col2);
20
21void freeInt1d(int **ptr);
22void freeInt2d(int ***ptr, size_t m);
23void freeInt3d(int ****ptr, size_t m, size_t n);
24
25// double
26double* allocDouble1d(size_t m);
27double** allocDouble2d(size_t m, size_t n);
28double*** allocDouble3d(size_t m, size_t n, size_t l);
29
30void reallocDouble1d(double **ptr, size_t newrow);
31void reallocDouble2d(double ***ptr, size_t oldrow, size_t newrow, size_t col);
32void reallocDouble3d(double ****ptr, size_t oldrow, size_t newrow, size_t col1, size_t col2);
33
34void freeDouble1d(double **ptr);
35void freeDouble2d(double ***ptr, size_t m);
36void freeDouble3d(double ****ptr, size_t m, size_t n);
37
38// float
39float* allocFloat1d(size_t m);
40float** allocFloat2d(size_t m, size_t n);
41float*** allocFloat3d(size_t m, size_t n, size_t l);
42
43void reallocFloat1d(float **ptr, size_t newrow);
44void reallocFloat2d(float ***ptr, size_t oldrow, size_t newrow, size_t col);
45void reallocFloat3d(float ****ptr, size_t oldrow, size_t newrow, size_t col1, size_t col2);
46
47void freeFloat1d(float **ptr);
48void freeFloat2d(float ***ptr, size_t m);
49void freeFloat3d(float ****ptr, size_t m, size_t n);
50
51// char
52char* allocChar1d(size_t m);
53char** allocChar2d(size_t m, size_t n);
54char*** allocChar3d(size_t m, size_t n, size_t l);
55
56void reallocChar1d(char **ptr, size_t newrow);
57void reallocChar2d(char ***ptr, size_t oldrow, size_t newrow, size_t col);
58void reallocChar3d(char ****ptr, size_t oldrow, size_t newrow, size_t col1, size_t col2);
59
60void freeChar1d(char **ptr);
61void freeChar2d(char ***ptr, size_t m);
62void freeChar3d(char ****ptr, size_t m, size_t n);
63
64// MatrixXcd
65MatrixXcd* allocMatrixXcd1d(size_t m);
66MatrixXcd** allocMatrixXcd2d(size_t m, size_t n);
67MatrixXcd*** allocMatrixXcd3d(size_t m, size_t n, size_t l);
68
69void freeMatrixXcd1d(MatrixXcd **ptr);
70void freeMatrixXcd2d(MatrixXcd ***ptr, size_t m);
71void freeMatrixXcd3d(MatrixXcd ****ptr, size_t m, size_t n);
72
73
74// DoubleTensor
75DoubleTensor* allocDoubleTensor1d(size_t m);
76DoubleTensor** allocDoubleTensor2d(size_t m, size_t n);
77DoubleTensor*** allocDoubleTensor3d(size_t m, size_t n, size_t l);
78
79void reallocDoubleTensor1d(DoubleTensor **ptr, size_t newrow);
80void reallocDoubleTensor2d(DoubleTensor ***ptr, size_t oldrow, size_t newrow, size_t col);
81void reallocDoubleTensor3d(DoubleTensor ****ptr, size_t oldrow, size_t newrow, size_t col1, size_t col2);
82
83void freeDoubleTensor1d(DoubleTensor **ptr);
84void freeDoubleTensor2d(DoubleTensor ***ptr, size_t m);
85void freeDoubleTensor3d(DoubleTensor ****ptr, size_t m, size_t n);
86
87/* Basic Memory control ------------------------------------*/
88
89// basic memory allocation
90void* allocArray1d(size_t m, size_t size);
91void** allocArray2d(size_t m, size_t n, size_t size);
92void*** allocArray3d(size_t m, size_t n, size_t l, size_t size);
93
94// basic memory reallocation
95void reallocArray1d(void **ptr, size_t newrow, size_t size);
96void reallocArray2d(void ***ptr, size_t oldrow, size_t newrow, size_t col, size_t size);
97void reallocArray3d(void ****ptr, size_t oldrow, size_t newrow, size_t col1, size_t col2, size_t size);
98
99// basic memory free
100void freeArray1d(void **ptr);
101void freeArray2d(void ***ptr, size_t m);
102void freeArray3d(void ****ptr, size_t m, size_t n);
103
104
105/* Copy dynamically allocated array ------------------------*/
106
107// int
108void copyInt1d(int* dest, const int* src, size_t m);
109void copyInt1dPart(int* dest, const int* src, size_t ista, size_t iend);
110void copyInt2d(int** dest, const int** src, size_t m, size_t n);
111void copyInt3d(int*** dest, const int*** src, size_t m, size_t n, size_t l);
112
113// double
114void copyDouble1d(double *dest, const double *src, size_t m);
115void copyDouble2d(double **dest, const double **src, size_t m, size_t n);
116void copyDouble3d(double ***dest, const double ***src, size_t m, size_t n, size_t l);
117
118// float
119void copyFloat1d(float *dest, const float *src, size_t m);
120void copyFloat2d(float **dest, const float **src, size_t m, size_t n);
121void copyFloat3d(float ***dest, const float ***src, size_t m, size_t n, size_t l);
122
123// DoubleComplex
124void copyDoubleComplex1d(DoubleComplex *dest, const DoubleComplex *src, size_t m);
125void copyDoubleComplex2d(DoubleComplex **dest, const DoubleComplex **src, size_t m, size_t n);
126void copyDoubleComplex3d(DoubleComplex ***dest, const DoubleComplex ***src, size_t m, size_t n, size_t l);
127
128// DoubleTensor
129void copyDoubleTensor(DoubleTensor *dest, const DoubleTensor src);
130void copyDoubleTensor1d(DoubleTensor **dest, const DoubleTensor *src, size_t m);
131
132#endif // __CCEX_MEMORY_H_
Complex number with double precision.
Definition utilities.h:28
Tensor with double precision.
Definition utilities.h:37