| 350 | } |
| 351 | |
| 352 | void Transpose(ByteArray& data, size_t record_size) { |
| 353 | if (record_size == 0) { |
| 354 | return; |
| 355 | } |
| 356 | |
| 357 | ByteArray temp(data); |
| 358 | const size_t rows = data.size() / record_size; |
| 359 | const size_t columns = record_size; |
| 360 | for (size_t row = 0; row < rows; ++row) { |
| 361 | for (size_t column = 0; column < columns; ++column) { |
| 362 | const size_t from = row * columns + column; |
| 363 | const size_t to = column * rows + row; |
| 364 | data[to] = temp[from]; |
| 365 | } |
| 366 | } |
| 367 | } |
| 368 | |
| 369 | void InvTranspose(ByteArray& data, size_t record_size) { |
| 370 | if (record_size == 0) { |