topical media & game development
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.