Xcos MVC: fix includes
[scilab.git] / scilab / modules / scicos / src / cpp / LoggerView.hxx
1 /*
2  *  Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
3  *  Copyright (C) 2014-2014 - Scilab Enterprises - Clement DAVID
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.1-en.txt
10  *
11  */
12
13 #ifndef LOGGERVIEW_HXX_
14 #define LOGGERVIEW_HXX_
15
16 #include <cwchar>
17 #include <sstream>
18 #include "View.hxx"
19 #include "utilities.hxx"
20
21 namespace org_scilab_modules_scicos
22 {
23
24 enum LogLevel
25 {
26     LOG_UNDEF = -1,   //!< Undefined value
27     LOG_TRACE = 0,    //!< more detailed information. Expect these to be written to logs only.
28     LOG_DEBUG = 1,    //!< detailed information on the flow through the system. Expect these to be written to logs only.
29     LOG_INFO = 2,    //!< Interesting runtime events (startup/shutdown). Expect these to be immediately visible on a console, so be conservative and keep to a minimum.
30     LOG_WARNING = 3,    //!<
31     LOG_ERROR = 4,    //!< Other runtime errors or unexpected conditions. Expect these to be immediately visible on a status console.
32     LOG_FATAL = 5,    //!< Severe errors that cause premature termination. Expect these to be immediately visible on a status console.
33 };
34
35 class LoggerView: public View
36 {
37 public:
38     LoggerView();
39     ~LoggerView();
40
41     /*
42      * Implement a classical Logger interface
43      */
44
45     static enum LogLevel indexOf(const wchar_t* name);
46     static const wchar_t* toString(enum LogLevel level);
47
48     enum LogLevel getLevel() const
49     {
50         return m_level;
51     }
52     void setLevel(enum LogLevel level)
53     {
54         this->m_level = level;
55     }
56
57     void log(enum LogLevel level, const std::stringstream& msg);
58     void log(enum LogLevel level, const char* msg);
59     void log(enum LogLevel level, const wchar_t* msg);
60
61     /*
62      * Implement the Logger as a View
63      */
64
65     void objectCreated(const ScicosID& uid, kind_t k);
66     void objectDeleted(const ScicosID& uid, kind_t k);
67     void objectUpdated(const ScicosID& uid, kind_t k);
68     void propertyUpdated(const ScicosID& uid, kind_t k, object_properties_t p);
69     void propertyUpdated(const ScicosID& uid, kind_t k, object_properties_t p, update_status_t u);
70
71 private:
72     enum LogLevel m_level;
73 };
74
75 } /* namespace org_scilab_modules_scicos */
76
77 #endif /* LOGGERVIEW_HXX_ */