#ifndef SEQ2D_H #define SEQ2D_H #include "PointADT.h" #include "LineADT.h" #include "PathADT.h" #include "MapTypes.h" #include <vector> template <class T> class Seq2D { private: std::vector<std::vector<T>> s; double scale; nat nRow; nat nCol; bool validRow(nat i) const; bool validCol(nat j) const; bool validPoint(PointT p) const; bool validLine(LineT l) const; bool validPath(PathT pth) const; std::vector<PointT> pointsInLine(LineT l) const; std::vector<PointT> pointsInPath(PathT pth) const; public: Seq2D(std::vector<std::vector<T>> s, double scale); void set(PointT p, T v); T get(PointT p) const; nat getNumRow() const; nat getNumCol() const; double getScale() const; nat count(T t) const; nat count(LineT l, T t) const; nat count(PathT pth, T t) const; double length(PathT pth) const; bool connected(PointT p1, PointT p2) const; }; #endif