proteus 1.9.0
C/C++/Fortran libraries
Loading...
Searching...
No Matches
ArrayRef.h
Go to the documentation of this file.
1#ifndef ARRAYREF_H
2#define ARRAYREF_H
3
4template <class T>
6{
7 T *values;
8
9public:
10 inline ArrayRef1D(T* vals) : values(vals) {};
11 inline T &operator[](int i) { return values[i]; };
12};
13
14template <class T>
16{
17 T *values;
18 int dimension1;
19 int dimension2;
20
21public:
22 inline ArrayRef2D(T* vals, int dim1, int dim2) : values(vals), dimension2(dim2) {};
23 inline ArrayRef2D(T* vals, int dim2) : values(vals), dimension2(dim2) {};
24 inline T* operator[] (int i) { return values + i * dimension2; }
25};
26
27template <class T>
29{
30 T *values;
31 int dimension1;
32 int dimension2;
33 int dimension3;
34 int mult;
35
36public:
37 ArrayRef3D(T* vals, int dim1, int dim2, int dim3) : values(vals), dimension2(dim2), dimension3(dim3), mult(dim2 * dim3) {};
38 inline ArrayRef2D<T> operator[] (int i) { return ArrayRef2D<T>(values + i * mult, dimension3); } ;
39};
40
41template <class T>
43{
44 T *values;
45 int dimension1;
46 int dimension2;
47 int dimension3;
48 int dimension4;
49 int mult1;
50
51public:
52 ArrayRef4D(T* vals, int dim1, int dim2, int dim3, int dim4) :
53 values(vals), dimension2(dim2), dimension3(dim3), dimension4(dim4),mult1(dim2 * dim3 * dim4) {};
54 inline ArrayRef3D<T> operator[] (int i) { return ArrayRef3D<T>(values + i * mult1 , dimension2, dimension3, dimension4); } ;
55};
56
57template <class T>
59{
60 T *values;
61 int dimension1;
62 int dimension2;
63 int dimension3;
64 int dimension4;
65 int dimension5;
66 int mult1;
67
68public:
69 ArrayRef5D(T* vals, int dim1, int dim2, int dim3, int dim4, int dim5) :
70 values(vals), dimension2(dim2), dimension3(dim3), dimension4(dim4), dimension5(dim5),mult1(dim2 * dim3 * dim4* dim5) {};
71 inline ArrayRef4D<T> operator[] (int i) { return ArrayRef4D<T>(values + i * mult1 , dimension2, dimension3, dimension4, dimension5); } ;
72};
73
74template <class T>
76{
77 T *values;
78 int dimension1;
79 int dimension2;
80 int dimension3;
81 int dimension4;
82 int dimension5;
83 int dimension6;
84 int mult1;
85
86public:
87 ArrayRef6D(T* vals, int dim1, int dim2, int dim3, int dim4, int dim5, int dim6) :
88 values(vals), dimension2(dim2), dimension3(dim3), dimension4(dim4), dimension5(dim5), dimension6(dim6), mult1(dim2 * dim3 * dim4 * dim5 * dim6) {};
89 inline ArrayRef5D<T> operator[] (int i) { return ArrayRef5D<T>(values + i * mult1 , dimension2, dimension3, dimension4, dimension5, dimension6); } ;
90};
91
92#endif
Double T
Definition Headers.h:87
ArrayRef1D(T *vals)
Definition ArrayRef.h:10
T & operator[](int i)
Definition ArrayRef.h:11
T * operator[](int i)
Definition ArrayRef.h:24
ArrayRef2D(T *vals, int dim1, int dim2)
Definition ArrayRef.h:22
ArrayRef2D(T *vals, int dim2)
Definition ArrayRef.h:23
ArrayRef2D< T > operator[](int i)
Definition ArrayRef.h:38
ArrayRef3D(T *vals, int dim1, int dim2, int dim3)
Definition ArrayRef.h:37
ArrayRef3D< T > operator[](int i)
Definition ArrayRef.h:54
ArrayRef4D(T *vals, int dim1, int dim2, int dim3, int dim4)
Definition ArrayRef.h:52
ArrayRef4D< T > operator[](int i)
Definition ArrayRef.h:71
ArrayRef5D(T *vals, int dim1, int dim2, int dim3, int dim4, int dim5)
Definition ArrayRef.h:69
ArrayRef6D(T *vals, int dim1, int dim2, int dim3, int dim4, int dim5, int dim6)
Definition ArrayRef.h:87
ArrayRef5D< T > operator[](int i)
Definition ArrayRef.h:89