// Node.h #ifndef __NODE_H__ #define __NODE_H__ #include "EdgeType.h" #include using std::list; class Node { public: Node () : name(""), theType(), edgeCount(1), visited(false), dfsNumber(0), weight(0) {} Node (const string & n, const string& t, int count, int wgt) : name(n), theType(EdgeType::convertToEnum(t)), edgeCount(count), visited(false), dfsNumber(0), weight(wgt) {} Node (const Node& node) : name(node.name), theType(node.theType), edgeCount(node.edgeCount), visited(node.visited), dfsNumber(node.dfsNumber), weight(node.weight) {} int getEdgeCount () const { return edgeCount; } void setEdgeCount (int n) { edgeCount = n; } void incrEdgeCount () { ++edgeCount; } const string& getName () const { return name; } string getEdgeType () const { return theType.getString(); } EdgeTypes getEdgeType (int) const { return theType.getType(); } void setEdgeType (EdgeTypes t) { theType.setType(t); } void markVisited () { visited = true; } void markNotVisited () { visited = false; } bool isVisited () const { return visited; } void setDFSnumber (int n) { dfsNumber = n; } int getDFSnumber () const { return dfsNumber; } EdgeType getEdgeEnum (const string&) const; string getEdgeString (EdgeType) const; void setWeight (int w) { weight = w; } int getWeight () const { return weight; } private: string name; EdgeType theType; int edgeCount; bool visited; int dfsNumber; int weight; }; std::ostream & operator<<(std::ostream &, const Node &); #endif