#ifndef _BASETYPES_H_ #define _BASETYPES_H_ #include <limits> // std::numeric_limits #include "stdlib.h" // for size_t template<class T, size_t N> constexpr size_t _countof(T (&)[N]) { return N; } // Coordinate types typedef short coord_t; typedef unsigned short ucoord_t; // Invalid values static const coord_t coord_invalid = std::numeric_limits<coord_t>::max(); static const ucoord_t ucoord_invalid = std::numeric_limits<ucoord_t>::max(); // Direction representation enum class dir_t : char { N = 'N', S = 'S', E = 'E', W = 'W' }; #endif //_BASETYPES_H_