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