Changeset 288 in Sophya for trunk/SophyaLib/NTools/matrix.cc
- Timestamp:
- May 3, 1999, 6:55:25 PM (26 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/SophyaLib/NTools/matrix.cc
r244 r288 1 // $Id: matrix.cc,v 1. 2 1999-04-22 16:18:41 ansari Exp $1 // $Id: matrix.cc,v 1.3 1999-05-03 16:55:21 ansari Exp $ 2 2 3 3 #include "machdefs.h" … … 10 10 #include "cvector.h" 11 11 #include "generalfit.h" 12 #include "tmatrix.h" 12 13 13 14 // Sous Linux, LN_MAXDOUBLE LN_MINDOUBLE ne semblent pas etre definies … … 41 42 // Construit une matrice 1x1 (pour ppersist). 42 43 //-- 43 : nr(1), nc(1), ndata(1), nalloc(1), data(new double[1]) 44 : nr(1), nc(1), ndata(1), nalloc(1), data(new double[1]), FromTmatrix(false) 44 45 { 45 46 // if (r<=0 || c<=0) THROW(rangeCheckErr); … … 53 54 // Construit une matrice de r lignes et c colonnes. 54 55 //-- 55 : nr(r), nc(c), ndata(r*c), nalloc(r*c), data(new double[r*c]) 56 : nr(r), nc(c), ndata(r*c), nalloc(r*c), data(new double[r*c]), FromTmatrix(false) 56 57 { 57 58 // if (r<=0 || c<=0) THROW(rangeCheckErr); … … 66 67 // le tableau des valeurs : pas d'allocation. 67 68 //-- 68 : nr(r), nc(c), ndata(r*c), nalloc(0), data(values) 69 : nr(r), nc(c), ndata(r*c), nalloc(0), data(values), FromTmatrix(false) 69 70 { 70 71 END_CONSTRUCTOR … … 77 78 //-- 78 79 : nr(a.nr), nc(a.nc), ndata(a.nr*a.nc), nalloc(a.nr*a.nc), 79 data(new double[a.nr*a.nc]) 80 data(new double[a.nr*a.nc]), FromTmatrix(false) 80 81 { 81 82 memcpy(data, a.data, nalloc * sizeof(double)); … … 83 84 } 84 85 86 //++ 87 Matrix::Matrix(const TMatrix<r_8>& a) 88 // 89 // Constructeur par copie a partir d'une TMatrix<r_8>. 90 // Attention, les donnees sont partagees. 91 //-- 92 : nr(a.NRows()), nc(a.NCols()), ndata(a.NRows()*a.NCols()) 93 , nalloc(a.NRows()*a.NCols()) 94 , data(const_cast<r_8 *>(a.Data())) 95 , FromTmatrix(true) 96 { 97 END_CONSTRUCTOR 98 } 99 85 100 86 101 Matrix::~Matrix() 87 102 { 88 103 DBASSERT(ndata == nr*nc); 89 if (nalloc ) delete[] data;104 if (nalloc && !FromTmatrix) delete[] data; 90 105 } 91 106 … … 102 117 { 103 118 DBASSERT(ndata == nr*nc); 104 for (int i=0; i<ndata; i++) 105 data[i] = 0; 119 for (int i=0; i<ndata; i++) data[i] = 0; 106 120 } 107 121
Note:
See TracChangeset
for help on using the changeset viewer.