topical media & game development

talk show tell print

graphic-directx-game-22-ShadowMap-Table.h / h



  //=============================================================================
  // table.h by Frank Luna (C) 2004 All Rights Reserved.
  //============================================================================= 
  
  ifndef TABLE_H
  define TABLE_H
  
  include <cassert>
  include <vector>
  
  template <typename T>
  class Table
  {
  public:
          Table()
                  : mRows(0), mCols(0)
          {
          }
  
          Table(int m, int n)
                  : mRows(m), mCols(n), mMatrix(m*n)
          {
          }
  
          Table(int m, int n, const T& value)
                  : mRows(m), mCols(n), mMatrix(m*n, value)
          {
          }
  
          // For non-const objects
          T& operator()(int i, int j)
          {
                  return mMatrix[i*mCols+j];
          }
  
          // For const objects
          const T& operator()(int i, int j)const
          {
                  return mMatrix[i*mCols+j];
          }
  
          // Add typename to let compiler know type and not static variable.
          typedef typename std::vector<T>::iterator iter;
          typedef typename std::vector<T>::const_iterator citer;
  
          // For non-const objects
          iter begin(){ return mMatrix.begin(); }
          iter end()        { return mMatrix.end();   }
          
          // For const objects
          citer begin() const { return mMatrix.begin(); }
          citer end() const { return mMatrix.end();   }
  
          int numRows() const        { return mRows;        }
          int numCols() const        { return mCols;        }
  
          void resize(int m, int n)
          {
                  mRows = m;
                  mCols = n;
                  mMatrix.resize(m*n);
          }
  
          void resize(int m, int n, const T& value)
          {
                  mRows = m;
                  mCols = n;
                  mMatrix.resize(m*n, value);
          }
  
  private:
          int mRows;
          int mCols;
          std::vector<T> mMatrix;
  };
  
  endif // TABLE_H


(C) Æliens 20/2/2008

You may not copy or print any of this material without explicit permission of the author or the publisher. In case of other copyright issues, contact the author.