diff options
| author | redpony <redpony@ec762483-ff6d-05da-a07a-a48fb63a330f> | 2010-08-11 02:37:10 +0000 | 
|---|---|---|
| committer | redpony <redpony@ec762483-ff6d-05da-a07a-a48fb63a330f> | 2010-08-11 02:37:10 +0000 | 
| commit | a53461650fbdcd3cfe7543d28af9647ac3e5e47e (patch) | |
| tree | e812756c733b34f9c16894265204acfa9f9998a9 /decoder/array2d.h | |
| parent | 19b59489bb600f438ad96f04ec5d5c5b6616c9c2 (diff) | |
major refactor, break bad circular deps
git-svn-id: https://ws10smt.googlecode.com/svn/trunk@509 ec762483-ff6d-05da-a07a-a48fb63a330f
Diffstat (limited to 'decoder/array2d.h')
| -rw-r--r-- | decoder/array2d.h | 172 | 
1 files changed, 0 insertions, 172 deletions
| diff --git a/decoder/array2d.h b/decoder/array2d.h deleted file mode 100644 index e63eda0d..00000000 --- a/decoder/array2d.h +++ /dev/null @@ -1,172 +0,0 @@ -#ifndef ARRAY2D_H_ -#define ARRAY2D_H_ - -#include <iostream> -#include <algorithm> -#include <cassert> -#include <vector> -#include <string> - -template<typename T> -class Array2D { - public: -  typedef typename std::vector<T>::reference reference; -  typedef typename std::vector<T>::const_reference const_reference; -  typedef typename std::vector<T>::iterator iterator; -  typedef typename std::vector<T>::const_iterator const_iterator; -  Array2D() : width_(0), height_(0) {} -  Array2D(int w, int h, const T& d = T()) : -    width_(w), height_(h), data_(w*h, d) {} -  Array2D(const Array2D& rhs) : -    width_(rhs.width_), height_(rhs.height_), data_(rhs.data_) {} -  bool empty() const { return data_.empty(); } -  void resize(int w, int h, const T& d = T()) { -    data_.resize(w * h, d); -    width_ = w; -    height_ = h; -  } -  const Array2D& operator=(const Array2D& rhs) { -    data_ = rhs.data_; -    width_ = rhs.width_; -    height_ = rhs.height_; -    return *this; -  } -  void fill(const T& v) { data_.assign(data_.size(), v); } -  int width() const { return width_; } -  int height() const { return height_; } -  reference operator()(int i, int j) { -    return data_[offset(i, j)]; -  } -  void clear() { data_.clear(); width_=0; height_=0; } -  const_reference operator()(int i, int j) const { -    return data_[offset(i, j)]; -  } -  iterator begin_col(int j) { -    return data_.begin() + offset(0,j); -  } -  const_iterator begin_col(int j) const { -    return data_.begin() + offset(0,j); -  } -  iterator end_col(int j) { -    return data_.begin() + offset(0,j) + width_; -  } -  const_iterator end_col(int j) const { -    return data_.begin() + offset(0,j) + width_; -  } -  iterator end() { return data_.end(); } -  const_iterator end() const { return data_.end(); } -  const Array2D<T>& operator*=(const T& x) { -    std::transform(data_.begin(), data_.end(), data_.begin(), -        std::bind2nd(std::multiplies<T>(), x)); -  } -  const Array2D<T>& operator/=(const T& x) { -    std::transform(data_.begin(), data_.end(), data_.begin(), -        std::bind2nd(std::divides<T>(), x)); -  } -  const Array2D<T>& operator+=(const Array2D<T>& m) { -    std::transform(m.data_.begin(), m.data_.end(), data_.begin(), data_.begin(), std::plus<T>()); -  } -  const Array2D<T>& operator-=(const Array2D<T>& m) { -    std::transform(m.data_.begin(), m.data_.end(), data_.begin(), data_.begin(), std::minus<T>()); -  } - - private: -  inline int offset(int i, int j) const { -    assert(i<width_); -    assert(j<height_); -    return i + j * width_; -  } - -  int width_; -  int height_; - -  std::vector<T> data_; -}; - -template <typename T> -Array2D<T> operator*(const Array2D<T>& l, const T& scalar) { -  Array2D<T> res(l); -  res *= scalar; -  return res; -} - -template <typename T> -Array2D<T> operator*(const T& scalar, const Array2D<T>& l) { -  Array2D<T> res(l); -  res *= scalar; -  return res; -} - -template <typename T> -Array2D<T> operator/(const Array2D<T>& l, const T& scalar) { -  Array2D<T> res(l); -  res /= scalar; -  return res; -} - -template <typename T> -Array2D<T> operator+(const Array2D<T>& l, const Array2D<T>& r) { -  Array2D<T> res(l); -  res += r; -  return res; -} - -template <typename T> -Array2D<T> operator-(const Array2D<T>& l, const Array2D<T>& r) { -  Array2D<T> res(l); -  res -= r; -  return res; -} - -template <typename T> -inline std::ostream& operator<<(std::ostream& os, const Array2D<T>& m) { -  for (int i=0; i<m.width(); ++i) { -    for (int j=0; j<m.height(); ++j) -      os << '\t' << m(i,j); -    os << '\n'; -  } -  return os; -} - -inline std::ostream& operator<<(std::ostream& os, const Array2D<bool>& m) { -  os << ' '; -  for (int j=0; j<m.height(); ++j) -    os << (j%10); -  os << "\n"; -  for (int i=0; i<m.width(); ++i) { -    os << (i%10); -    for (int j=0; j<m.height(); ++j) -      os << (m(i,j) ? '*' : '.'); -    os << (i%10) << "\n"; -  } -  os << ' '; -  for (int j=0; j<m.height(); ++j) -    os << (j%10); -  os << "\n"; -  return os; -} - -inline std::ostream& operator<<(std::ostream& os, const Array2D<std::vector<bool> >& m) { -  os << ' '; -  for (int j=0; j<m.height(); ++j) -    os << (j%10) << "\t"; -  os << "\n"; -  for (int i=0; i<m.width(); ++i) { -    os << (i%10); -    for (int j=0; j<m.height(); ++j) { -      const std::vector<bool>& ar = m(i,j); -      for (int k=0; k<ar.size(); ++k) -        os << (ar[k] ? '*' : '.'); -    } -    os << "\t"; -    os << (i%10) << "\n"; -  } -  os << ' '; -  for (int j=0; j<m.height(); ++j) -    os << (j%10) << "\t"; -  os << "\n"; -  return os; -} - -#endif - | 
