Rev | Line | |
---|
[136] | 1 |
|
---|
| 2 | #ifndef BTL_C_INTERFACE_BASE_H
|
---|
| 3 | #define BTL_C_INTERFACE_BASE_H
|
---|
| 4 |
|
---|
| 5 | #include "utilities.h"
|
---|
| 6 | #include <vector>
|
---|
| 7 |
|
---|
| 8 | template<class real> class c_interface_base
|
---|
| 9 | {
|
---|
| 10 |
|
---|
| 11 | public:
|
---|
| 12 |
|
---|
| 13 | typedef real real_type;
|
---|
| 14 | typedef std::vector<real> stl_vector;
|
---|
| 15 | typedef std::vector<stl_vector > stl_matrix;
|
---|
| 16 |
|
---|
| 17 | typedef real* gene_matrix;
|
---|
| 18 | typedef real* gene_vector;
|
---|
| 19 |
|
---|
| 20 | static void free_matrix(gene_matrix & A, int N){
|
---|
| 21 | delete A;
|
---|
| 22 | }
|
---|
| 23 |
|
---|
| 24 | static void free_vector(gene_vector & B){
|
---|
| 25 | delete B;
|
---|
| 26 | }
|
---|
| 27 |
|
---|
| 28 | static inline void matrix_from_stl(gene_matrix & A, stl_matrix & A_stl){
|
---|
| 29 | int N = A_stl.size();
|
---|
| 30 | A = new real[N*N];
|
---|
| 31 | for (int j=0;j<N;j++)
|
---|
| 32 | for (int i=0;i<N;i++)
|
---|
| 33 | A[i+N*j] = A_stl[j][i];
|
---|
| 34 | }
|
---|
| 35 |
|
---|
| 36 | static inline void vector_from_stl(gene_vector & B, stl_vector & B_stl){
|
---|
| 37 | int N = B_stl.size();
|
---|
| 38 | B = new real[N];
|
---|
| 39 | for (int i=0;i<N;i++)
|
---|
| 40 | B[i] = B_stl[i];
|
---|
| 41 | }
|
---|
| 42 |
|
---|
| 43 | static inline void vector_to_stl(gene_vector & B, stl_vector & B_stl){
|
---|
| 44 | int N = B_stl.size();
|
---|
| 45 | for (int i=0;i<N;i++)
|
---|
| 46 | B_stl[i] = B[i];
|
---|
| 47 | }
|
---|
| 48 |
|
---|
| 49 | static inline void matrix_to_stl(gene_matrix & A, stl_matrix & A_stl){
|
---|
| 50 | int N = A_stl.size();
|
---|
| 51 | for (int j=0;j<N;j++){
|
---|
| 52 | A_stl[j].resize(N);
|
---|
| 53 | for (int i=0;i<N;i++)
|
---|
| 54 | A_stl[j][i] = A[i+N*j];
|
---|
| 55 | }
|
---|
| 56 | }
|
---|
| 57 |
|
---|
| 58 | static inline void copy_vector(const gene_vector & source, gene_vector & cible, int N){
|
---|
| 59 | for (int i=0;i<N;i++)
|
---|
| 60 | cible[i]=source[i];
|
---|
| 61 | }
|
---|
| 62 |
|
---|
| 63 | static inline void copy_matrix(const gene_matrix & source, gene_matrix & cible, int N){
|
---|
| 64 | for (int j=0;j<N;j++){
|
---|
| 65 | for (int i=0;i<N;i++){
|
---|
| 66 | cible[i+N*j] = source[i+N*j];
|
---|
| 67 | }
|
---|
| 68 | }
|
---|
| 69 | }
|
---|
| 70 |
|
---|
| 71 | };
|
---|
| 72 |
|
---|
| 73 | #endif
|
---|
Note:
See
TracBrowser
for help on using the repository browser.