GPL + CeCILL Header change
[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  * Copyright (C) 2012 - 2016 - Scilab Enterprises
6  *
7  * This file is hereby licensed under the terms of the GNU GPL v2.0,
8  * pursuant to article 5.3.4 of the CeCILL v.2.1.
9  * This file was originally licensed under the terms of the CeCILL v2.1,
10  * and continues to be available under such terms.
11  * For more information, see the COPYING file which you should have received
12  * along with this program.
13  * === LICENSE_END ===
14  *
15  */
16
17 #ifndef __LOGGER_HXX__
18 #define __LOGGER_HXX__
19
20 #include <iostream>
21 #include <fstream>
22 #include <memory>
23 #include <string>
24
25 namespace analysis
26 {
27      namespace logging
28      {
29
30          class Logger
31          {
32              std::shared_ptr<std::wostream> out;
33
34          public:
35
36              //Logger(std::wostream & _out) : out(new std::wostream(&_out)) { }
37              Logger(const std::string & file) : out(new std::wofstream(file, std::ofstream::out | std::ofstream::trunc)) { }
38
39              template<typename T>
40              inline void log(const T & x)
41                  {
42                      //*out << x << std::endl;
43                  }
44              
45              template<typename T>
46              inline void log(const unsigned int line, const char * file, const T & x)
47                  {
48                      //*out << file << L"@" << line << L": " << x << std::endl;
49                  }
50
51              template<typename T, typename... Args>
52              inline void log(const T & x, Args... args)
53                  {
54                      //*out << x << L" ";
55                      log(args...);
56                  }
57          };
58          
59      } // namespace logging
60
61 } // namespace analysis
62
63
64 #endif // __LOGGER_HXX__