#include #include #include #include #include #include // Debug macros #define DEBUG_START() \ try { #define DEBUG_END() \ } catch (const std::exception &e) { \ std::cerr << "Exception caught in function: " << __FUNCTION__ \ << " at " << __FILE__ << ":" << __LINE__ << std::endl \ << "Message: " << e.what() << std::endl; \ std::abort(); \ } catch (...) { \ std::cerr << "Unknown exception caught in function: " << __FUNCTION__ \ << " at " << __FILE__ << ":" << __LINE__ << std::endl; \ std::abort(); \ } const char* vectorToString(const std::vector& vec, const std::string separator); const char* vectorToString(const std::vector& vec, const std::string separator); const char* vectorToString(const std::vector& vec, const std::string separator); const char* vectorToString(const std::vector>& vec, const std::string separator); const char* vectorToString(const std::set& intSet, const std::string separator); std::set splitString(const std::string& str, const std::string& delim); std::vector splitStringUint(const std::string& str, const std::string& delim); std::vector splitStringVector(const std::string& str, const std::string& delim);