b4b54ceb3d46b80eca66a96207dc7d0ff69f8725
[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  *
14  */
15
16 #ifndef __LOGGER_HXX__
17 #define __LOGGER_HXX__
18
19 #include <iostream>
20 #include <fstream>
21 #include <memory>
22 #include <string>
23
24 namespace analysis
25 {
26 namespace logging
27 {
28
29 class Logger
30 {
31     std::shared_ptr<std::wostream> out;
32
33 public:
34
35     //Logger(std::wostream & _out) : out(new std::wostream(&_out)) { }
36     Logger(const std::string & file) : out(new std::wofstream(file, std::ofstream::out | std::ofstream::trunc)) { }
37
38     template<typename T>
39     inline void log(const T & /*x*/)
40     {
41         //*out << x << std::endl;
42     }
43
44     template<typename T>
45     inline void log(const unsigned int /*line*/, const char * /*file*/, const T & /*x*/)
46     {
47         //*out << file << L"@" << line << L": " << x << std::endl;
48     }
49
50     template<typename T, typename... Args>
51     inline void log(const T & /*x*/, Args... args)
52     {
53         //*out << x << L" ";
54         log(args...);
55     }
56 };
57
58 } // namespace logging
59
60 } // namespace analysis
61
62
63 #endif // __LOGGER_HXX__