The DejaVU Framework --
hush 3.1
-
[up]
[top] -
index
make
include
source
logic
grammar
scripts
html
configure
mx
slides
talks
scenes
reports
projects
<body bgcolor="#FFFFFF" text="#000000">
// #includes for working with the C-style strings.
include
include
using namespace std;
// When the template specialization is used, the original template must be visible // too. #including it here ensures that it will always be visible when this
// specialization is visible.
include <Grid.h>
template <>
>
<h4 align=right text=red>.html> Grid<char*></h4><hr>
class Grid
{
public:
Grid(int inWidth = kDefaultWidth, int inHeight = kDefaultHeight);
Grid(const Grid& src);
~Grid();
Grid& operator=(const Grid& rhs);
void setElementAt(int x, int y, const char* inElem);
char* 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& src);
char*** mCells;
int mWidth, mHeight;
};<hr>
const int Grid::kDefaultWidth;
const int Grid::kDefaultHeight;
Grid::Grid(int inWidth, int inHeight) :
mWidth(inWidth), mHeight(inHeight)
{
mCells = new char** [mWidth];
for (int i = 0; i < mWidth; i++) {
mCells[i] = new char* [mHeight];
for (int j = 0; j < mHeight; j++) {
mCells[i][j] = NULL;
}
}
}
Grid::Grid(const Grid& src)
{
copyFrom(src);
}
Grid::~Grid()
{
// free the old memory
for (int i = 0; i < mWidth; i++) {
for (int j = 0; j < mHeight; j++) {
delete [] mCells[i][j];
}
delete [] mCells[i];
}
delete [] mCells;
}
void Grid::copyFrom(const Grid& src)
{
int i, j;
mWidth = src.mWidth;
mHeight = src.mHeight;
mCells = new char** [mWidth];
for (i = 0; i < mWidth; i++) {
mCells[i] = new char* [mHeight];
}
for (i = 0; i < mWidth; i++) {
for (j = 0; j < mHeight; j++) {
if (src.mCells[i][j] == NULL) {
mCells[i][j] = NULL;
} else {
mCells[i][j] = new char[strlen(src.mCells[i][j]) + 1];
strcpy(mCells[i][j], src.mCells[i][j]);
}
}
}
}
Grid& Grid::operator=(const Grid& rhs)
{
int i, j;
// check for self-assignment
if (this == &rhs) {
return (*this);
}
// free the old memory
for (i = 0; i < mWidth; i++) {
for (j = 0; j < mHeight; j++) {
delete [] mCells[i][j];
}
delete [] mCells[i];
}
delete [] mCells;
// copy the new memory
copyFrom(rhs);
return (*this);
}
void Grid::setElementAt(int x, int y, const char* inElem)
{
delete [] mCells[x][y];
if (inElem == NULL) {
mCells[x][y] = NULL;
} else {
mCells[x][y] = new char[strlen(inElem) + 1];
strcpy(mCells[x][y], inElem);
}
}
char* Grid::getElementAt(int x, int y) const
{
if (mCells[x][y] == NULL) {
return (NULL);
}
char* ret = new char[strlen(mCells[x][y]) + 1];
strcpy(ret, mCells[x][y]);
return (ret);
}
<hr>
<style type="text/css">
div.mainnavigate {
margin: 20px 2px;
/*
background-color: #ffffff;
*/
border: 1px solid black;
}
</style>
<div class=xnavigate>
[]
<black>readme</black>
course(s)
preface
<black>I</black>
1
2
<black>II</black>
3
4
<black>III</black>
5
6
7
<black>IV</black>
8
9
10
<black>V</black>
11
12
afterthought(s)
<black>appendix</black>
reference(s)
example(s)
<black>resource(s)</black>
_
</div>
<hr>
(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.
</div>
<script src="http://www.google-analytics.com/urchin.js" type="text/javascript">
</script>
<script type="text/javascript">
_uacct = "UA-2780434-1";
urchinTracker();
</script>
</body>
</html>
<hr>
<hr>
<table cellpadding=10>
<tr>
<td>
<address>
Hush Online Technology
</address>
hush@cs.vu.nl
<br>10/19/08
</td><td>
</td>
<td></td><td></td><td></td><td></td><td></td><td></td><td></td>
<td>
</td>
</tr>
</table>