diff --git a/src/Neighbor.h b/src/Neighbor.h new file mode 100644 --- /dev/null +++ b/src/Neighbor.h @@ -0,0 +1,71 @@ +/* + * + * $Id$ + * + * This file is part of the Virtual Leaf. + * + * The Virtual Leaf is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * The Virtual Leaf is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with the Virtual Leaf. If not, see . + * + * Copyright 2010 Roeland Merks. + * + */ + + +#ifndef _NEIGHBOR_H_ +#define _NEIGHBOR_H_ + +#include +#include +#include + +using namespace std; + +class Cell; +class Node; + +class Neighbor { + + protected: + // Proper accessors and mutators should obviate these friend classes! + friend class Cell; + friend class Mesh; + friend class Node; + friend class FigureEditor; + + Cell *cell; + Node *nb1, *nb2; + + public: + Neighbor(void); + Neighbor(Cell*, Node*, Node*); + Neighbor(const Neighbor&); + + bool CellEquals(int) const; + bool Cmp(Neighbor&) const; + bool Eq(Neighbor&) const; + Cell* getCell(void) const; + void XMLAdd(xmlNodePtr) const; + + ostream &print(ostream &os) const; +}; + +// Overload the << operator +ostream &operator<<(ostream &os, const Neighbor &n); + +// Realize that we're equating like pointers with object equivalence! +bool neighbor_cell_eq(const Neighbor &n1, const Neighbor &n2); + +#endif + +// finis