1 #ifndef F3DLog_h 2 #define F3DLog_h 3 4 #include <sstream> 5 #include <string> 6 7 class F3DLog 8 { 9 public: 10 enum class Severity : unsigned char 11 { 12 Info, 13 Warning, 14 Error 15 }; 16 17 template<typename... Args> Print(Severity sev,Args...args)18 static void Print(Severity sev, Args... args) 19 { 20 std::stringstream ss; 21 AppendArg(ss, args...); 22 PrintInternal(sev, ss.str()); 23 } 24 25 static void SetUseColoring(bool use); 26 27 static void SetQuiet(bool quiet); 28 29 protected: AppendArg(std::stringstream &)30 static void AppendArg(std::stringstream&) {} 31 32 template<typename T, typename... Args> AppendArg(std::stringstream & ss,T value,Args...args)33 static void AppendArg(std::stringstream& ss, T value, Args... args) 34 { 35 ss << value; 36 AppendArg(ss, args...); 37 } 38 39 static void PrintInternal(Severity sev, const std::string& msg); 40 }; 41 42 #endif 43