The DejaVU Framework -- hush 3.1

include: professional-program-11-GridTemplateContainer-GridTemplateTemplate.h /cygdrive/d/www/media


- [up] [top] - index make include source logic grammar scripts html configure mx slides talks scenes reports projects
<body bgcolor="#FFFFFF" text="#000000">

// Grid.h

include 
using std::vector;
using std::allocator;

template Allocator = allocator >
<h4 align=right text=red> Container</h4><hr>
      class Container = vector >
<hr>

Grid</h4>
  class Grid
  {
   public:
    Grid(int inWidth = kDefaultWidth, int inHeight = kDefaultHeight);
    Grid(const Grid<T, Container>& src);
    ~Grid();
    Grid<T, Container>& operator=(const Grid<T, Container>& rhs);
  
    void setElementAt(int x, int y, const T& inElem);
    T& getElementAt(int x, int y);
    const T& getElementAt(int x, int y) const;
  
    int getHeight() const { return mHeight; }
    int getWidth() const { return mWidth; }
    static const int kDefaultWidth = 10;
    static const int kDefaultHeight = 10;
  
   protected:
    void copyFrom(const Grid<T, Container>& src);
    Container<T>* mCells;
    int mWidth, mHeight;
  };


  
  template <typename T, template <typename E, typename Allocator = allocator<E> >

>

.html> Container></h4>
   class Container>
  Grid::Grid(int inWidth, int inHeight) :
    mWidth(inWidth), mHeight(inHeight)
  {
    // Dynamically allocate the array of mWidth containers
    mCells = new Container[mWidth];
    for (int i = 0; i < mWidth; i++) {
      // Resize each container so that it can hold mHeight elements.
      mCells[i].resize(mHeight);
    }
  }
  
  template Allocator = allocator >

>

.html> Container></h4>
   class Container>
  const int Grid::kDefaultWidth;
  
  template Allocator = allocator >

>

.html> Container></h4>
   class Container>
  const int Grid::kDefaultHeight;
  
  template Allocator = allocator >

>

.html> Container></h4>
   class Container>
  Grid::Grid(const Grid& src)
  {
    copyFrom(src);
  }
  
  template Allocator = allocator >

>

.html> Container></h4>
   class Container>
    Grid::~Grid()
  {
    delete [] mCells;
  }
  
  template Allocator = allocator >

>

.html> Container></h4>
   class Container>
  void Grid::copyFrom(const Grid& src)
  {
    int i, j;
    mWidth = src.mWidth;
    mHeight = src.mHeight;
  
    mCells = new Container[mWidth];
    for (i = 0; i < mWidth; i++) {
      // Resize each element, as in the constructor.
      mCells[i].resize(mHeight);
    }
    for (i = 0; i < mWidth; i++) {
      for (j = 0; j < mHeight; j++) {
        mCells[i][j] = src.mCells[i][j];
      }
    }
  }
  
  template Allocator = allocator >

>

.html> Container></h4>
   class Container>
  Grid& Grid::operator=(const Grid& rhs)
  {
    // check for self-assignment
    if (this == &rhs) {
      return (*this);
    }
    // free the old memory
    delete [] mCells;
  
    // copy the new memory
    copyFrom(rhs);
  
    return (*this);
  }
  
  template Allocator = allocator >

>

.html> Container></h4>
   class Container>
  void Grid::setElementAt(int x, int y, const T& inElem)
  {
    mCells[x][y] = inElem;
  }
  
  template Allocator = allocator >

>

.html> Container></h4>
   class Container>
  T& Grid::getElementAt(int x, int y)
  {
    return (mCells[x][y]);
  }
  
  template Allocator = allocator >

>

.html> Container></h4>
   class Container>
  const T& Grid::getElementAt(int x, int y) const
  {
    return (mCells[x][y]);
  }
  


(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. <script src="http://www.google-analytics.com/urchin.js" type="text/javascript"> </script> <script type="text/javascript"> _uacct = "UA-2780434-1"; urchinTracker(); </script>

Hush Online Technology
hush@cs.vu.nl
10/19/08