Ignore:
Timestamp:
Feb 26, 2008, 11:09:04 PM (14 years ago)
Author:
Peter
Message:

refs #343 moving data to inherited classes and using SmartPtr?.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/yat/classifier/MatrixLookup.cc

    r1168 r1169  
    3636
    3737  MatrixLookup::MatrixLookup(const utility::Matrix& data, const bool own)
    38     : DataLookup2D(own), data_(&data)
     38    : DataLookup2D(own), data_(MatrixP(&data, own))
    3939  {
    4040    column_index_ = utility::Index(data.columns());
     
    4747                             const utility::Index& row,
    4848                             const utility::Index& col)
    49     : DataLookup2D(row,col), data_(&data)
     49    : DataLookup2D(row,col), data_(MatrixP(&data, false))
    5050  {
    5151  }
     
    5656                             const utility::Index& index,
    5757                             const bool row)
    58     : DataLookup2D(), data_(&data)
     58    : DataLookup2D(), data_(MatrixP(&data, false))
    5959  {
    6060    if (row){
     
    7373    : DataLookup2D(other), data_(other.data_)
    7474  {
    75     ref_count_=other.ref_count_;
    76     if (ref_count_)
    77       ++(*ref_count_);
    7875  }
    7976
     
    8582    : DataLookup2D(other,row,col), data_(other.data_)
    8683  {
    87     ref_count_=other.ref_count_;
    88     if (ref_count_)
    89       ++(*ref_count_);
    9084  }
    9185 
     
    9690    : DataLookup2D(other,index,row), data_(other.data_)
    9791  {
    98     ref_count_=other.ref_count_;
    99     if (ref_count_)
    100       ++(*ref_count_);
    101 
    10292  }
    10393 
     
    10898    : DataLookup2D(rows,columns)
    10999  {
    110     data_ = new utility::Matrix(1,1,value);
    111     ref_count_= new u_int(1);
     100    data_ = MatrixP(new utility::Matrix(1,1,value));
    112101  }
    113102
     
    116105    : DataLookup2D()
    117106  {
    118     data_ = new utility::Matrix(is,sep);
    119     ref_count_= new u_int(1);
     107    data_ = MatrixP(new utility::Matrix(is,sep));
    120108    row_index_ = utility::Index(data_->rows());
    121109    column_index_ = utility::Index(data_->columns());
     
    125113  MatrixLookup::~MatrixLookup(void)
    126114  {
    127     if (ref_count_)
    128       if (!--(*ref_count_))
    129         delete data_;
    130115  }
    131116
     
    191176  {
    192177    if (this!=&other){
    193       if (ref_count_ && !--(*ref_count_))
    194         delete data_;
    195178      DataLookup2D::operator=(other);
    196179      data_ = other.data_;
    197       ref_count_=other.ref_count_;
    198       if (ref_count_)
    199         ++(*ref_count_);
    200180    }
    201181    return *this;
     
    203183
    204184
     185  std::ostream& operator<<(std::ostream& s, const MatrixLookup& m)
     186  {
     187    s.setf(std::ios::dec);
     188    s.precision(12);
     189    for(size_t i=0, j=0; i<m.rows(); i++)
     190      for (j=0; j<m.columns(); j++) {
     191        s << m(i,j);
     192        if (j<m.columns()-1)
     193          s << s.fill();
     194        else if (i<m.rows()-1)
     195          s << "\n";
     196      }
     197    return s;
     198  }
     199
    205200
    206201
Note: See TracChangeset for help on using the changeset viewer.