- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
int show_matrix(IN const matrix *in_matrix){
return walk_on_matrix(transmit_params(in_matrix,UNUSED, UNUSED), show);
}
typedef void (*action)(int, int, iomatr);
int walk_on_matrix(iomatr matr, action foo){
if(matrix_exists(matr.in_matrix) || matrix_exists(matr.out_matrix)){
int n_rows = matrix_exists(matr.in_matrix) ? matr.in_matrix->n_rows : matr.out_matrix->n_rows;
int n_columns = matrix_exists(matr.in_matrix) ? matr.in_matrix->n_columns : matr.out_matrix->n_columns;
for(int i = 0; i < n_rows; i++){
for(int j = 0; j < n_columns; j++){
foo(i, j, matr);
}
}
return true;
}
else{}
return false;
}
iomatr transmit_params(const matrix *in_matrix, matrix *out_matrix, void *param){
return (iomatr) { in_matrix, out_matrix, param};
}
typedef struct{
IN const matrix *in_matrix;
OUT matrix *out_matrix;
void *param;
}iomatr;
Нахуя?
Странная конструкция. Я понимаю если бы было iomatr(){ in_matrix, out_matrix, param} ...