| 680 |
|
int |
| 681 |
|
rmx_transfer_data(RMATRIX *rdst, RMATRIX *rsrc, int dometa) |
| 682 |
|
{ |
| 683 |
< |
if (!rdst | !rsrc || (rdst->nrows != rsrc->nrows) | |
| 684 |
< |
(rdst->ncols != rsrc->ncols) | |
| 685 |
< |
(rdst->ncomp != rsrc->ncomp)) |
| 683 |
> |
if (!rdst | !rsrc) |
| 684 |
|
return(0); |
| 687 |
– |
|
| 685 |
|
if (dometa) { /* transfer everything? */ |
| 686 |
|
rmx_reset(rdst); |
| 687 |
|
*rdst = *rsrc; |
| 688 |
|
rsrc->info = NULL; rsrc->mapped = NULL; rsrc->mtx = NULL; |
| 689 |
|
return(1); |
| 690 |
|
} |
| 691 |
< |
#ifdef MAP_FILE /* just matrix data -- leave metadata */ |
| 691 |
> |
/* just matrix data -- leave metadata */ |
| 692 |
> |
if ((rdst->nrows != rsrc->nrows) | |
| 693 |
> |
(rdst->ncols != rsrc->ncols) | |
| 694 |
> |
(rdst->ncomp != rsrc->ncomp)) |
| 695 |
> |
return(0); |
| 696 |
> |
#ifdef MAP_FILE |
| 697 |
|
if (rdst->mapped) |
| 698 |
|
munmap(rdst->mapped, rmx_mapped_size(rdst)); |
| 699 |
|
else |
| 753 |
|
for (i = dnew.nrows; i--; ) |
| 754 |
|
memcpy(rmx_lval(&dnew,i,j), rmx_val(rm,j,i), |
| 755 |
|
sizeof(rmx_dtype)*dnew.ncomp); |
| 756 |
< |
rmx_reset(rm); /* frees memory */ |
| 757 |
< |
*rm = dnew; /* replace w/ transpose */ |
| 756 |
< |
return(1); |
| 756 |
> |
/* and reassign result */ |
| 757 |
> |
return(rmx_transfer_data(rm, &dnew, 1)); |
| 758 |
|
} |
| 759 |
|
|
| 760 |
|
/* Multiply (concatenate) two matrices and allocate the result */ |