#ifndef UTILITY_H #define UTILITY_H #include #include #include #include "boost/date_time/posix_time/posix_time.hpp" #include "utility/file/FilePath.h" #include "utility/math/Vector2.h" #include "utility/TimePoint.h" namespace utility { TimePoint durationStart(); float duration(const TimePoint& start); float duration(std::function func); std::string timeToString(const time_t time); std::string timeToString(const boost::posix_time::ptime time); template std::vector concat(const std::vector& a, const std::vector& b); template void append(std::vector& a, const std::vector& b); template void append(std::set& a, const std::set& b); template std::vector toVector(const std::deque& d); template std::vector toStrings(const std::vector& d); bool intersectionPoint(Vec2f a1, Vec2f b1, Vec2f a2, Vec2f b2, Vec2f* i); size_t digits(size_t n); int roundToInt(float n); } template std::vector utility::concat(const std::vector& a, const std::vector& b) { std::vector r; append(r, a); append(r, b); return r; } template void utility::append(std::vector& a, const std::vector& b) { a.insert(a.begin(), b.begin(), b.end()); } template void utility::append(std::set& a, const std::set& b) { a.insert(b.begin(), b.end()); } template std::vector utility::toVector(const std::deque& d) { std::vector v; v.insert(v.begin(), d.begin(), d.end()); return v; } template std::vector utility::toStrings(const std::vector& d) { std::vector v; for (const T& t : d) { v.push_back(std::to_string(t)); } return v; } template<> inline std::vector utility::toStrings(const std::vector& d) { std::vector v; for (const FilePath& t : d) { v.push_back(t.str()); } return v; } #endif // UTILITY_H