Analysis: always a WIP but we would expect that the end is nearer than the begin
[scilab.git] / scilab / modules / ast / includes / analysis / logging / Logger.hxx
1 /*
2  *  Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
3  *  Copyright (C) 2015 - Scilab Enterprises - Calixte DENIZET
4  *
5  *  This file must be used under the terms of the CeCILL.
6  *  This source file is licensed as described in the file COPYING, which
7  *  you should have received as part of this distribution.  The terms
8  *  are also available at
9  *  http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
10  *
11  */
12
13 #ifndef __LOGGER_HXX__
14 #define __LOGGER_HXX__
15
16 #include <iostream>
17 #include <fstream>
18 #include <memory>
19 #include <string>
20
21 namespace analysis
22 {
23      namespace logging
24      {
25
26          class Logger
27          {
28              std::shared_ptr<std::wostream> out;
29
30          public:
31
32              //Logger(std::wostream & _out) : out(new std::wostream(&_out)) { }
33              Logger(const std::string & file) : out(new std::wofstream(file, std::ofstream::out | std::ofstream::trunc)) { }
34
35              template<typename T>
36              inline void log(const T & x)
37                  {
38                      //*out << x << std::endl;
39                  }
40              
41              template<typename T>
42              inline void log(const unsigned int line, const char * file, const T & x)
43                  {
44                      //*out << file << L"@" << line << L": " << x << std::endl;
45                  }
46
47              template<typename T, typename... Args>
48              inline void log(const T & x, Args... args)
49                  {
50                      //*out << x << L" ";
51                      log(args...);
52                  }
53          };
54          
55      } // namespace logging
56
57 } // namespace analysis
58
59
60 #endif // __LOGGER_HXX__