| 538 | } |
| 539 | |
| 540 | int cMatrix::resize(long _new_nT) { |
| 541 | int ret=1; |
| 542 | if (_new_nT < nT) return 1; |
| 543 | |
| 544 | FLOAT_DMEM *tmp = (FLOAT_DMEM *)crealloc(data, _new_nT*sizeof(FLOAT_DMEM)*N, nT*sizeof(FLOAT_DMEM)*N); |
| 545 | if (tmp==NULL) ret = 0; |
| 546 | else data = tmp; |
| 547 | |
| 548 | if (ret) { |
| 549 | // tmeta |
| 550 | if (tmeta != NULL) { |
| 551 | TimeMetaInfo *old = tmeta; |
| 552 | tmeta = new (std::nothrow) TimeMetaInfo[_new_nT]; |
| 553 | if (tmeta == NULL) { ret=0; tmeta = old; } |
| 554 | else { |
| 555 | if (!tmetaAlien) { |
| 556 | std::move(old, old + nT, tmeta); |
| 557 | delete[] old; |
| 558 | } else { |
| 559 | std::copy(old, old + nT, tmeta); |
| 560 | } |
| 561 | tmetaAlien = 0; |
| 562 | } |
| 563 | } |
| 564 | } |
| 565 | |
| 566 | if (ret) nT = _new_nT; |
| 567 | |
| 568 | return ret; |
| 569 | } |
| 570 | |
| 571 | void cMatrix::copyData(void *dest, long destIdx, void *src, long srcIdx, long nT, long N, bool zeroSource) { |
| 572 | memcpy(&((FLOAT_DMEM *)dest)[destIdx * N], &((FLOAT_DMEM *)src)[srcIdx * N], sizeof(FLOAT_DMEM) * N * nT); |