3db55a01b20b668ddb7d54c5b5ba03ecea6e6210
[scilab.git] / scilab / modules / scicos / src / cpp / LoggerView.cpp
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-en.txt
10  *
11  */
12
13 #include <string>
14 #include <iostream>
15 #include <sstream>
16 #include "scilabWrite.hxx"
17
18 #include "LoggerView.hxx"
19 #include "Controller.hxx"
20
21 namespace org_scilab_modules_scicos
22 {
23
24 LoggerView::LoggerView()
25 {
26 }
27
28 LoggerView::~LoggerView()
29 {
30 }
31
32 // generated with :
33 // awk ' $2 == "//!<" {sub(",","", $1); print "case " $1 ":\n    os << \"" $1 "\";\n    break;" }' ~/work/branches/YaSp/scilab/modules/scicos/includes/utilities.hxx
34
35 static std::ostream& operator<<(std::ostream& os, update_status_t u)
36 {
37     switch (u)
38     {
39         case SUCCESS:
40             os << "SUCCESS";
41             break;
42         case NO_CHANGES:
43             os << "NO_CHANGES";
44             break;
45         case FAIL:
46             os << "FAIL";
47             break;
48     }
49     return os;
50 }
51
52 static std::ostream& operator<<(std::ostream& os, kind_t k)
53 {
54     switch (k)
55     {
56         case ANNOTATION:
57             os << "ANNOTATION";
58             break;
59         case BLOCK:
60             os << "BLOCK";
61             break;
62         case DIAGRAM:
63             os << "DIAGRAM";
64             break;
65         case LINK:
66             os << "LINK";
67             break;
68         case PORT:
69             os << "PORT";
70             break;
71     }
72     return os;
73 }
74
75
76 static std::ostream& operator<<(std::ostream& os, object_properties_t p)
77 {
78     switch (p)
79     {
80         case PARENT_DIAGRAM:
81             os << "PARENT_DIAGRAM";
82             break;
83         case GEOMETRY:
84             os << "GEOMETRY";
85             break;
86         case DESCRIPTION:
87             os << "DESCRIPTION";
88             break;
89         case RELATED_TO:
90             os << "RELATED_TO";
91             break;
92         case INTERFACE_FUNCTION:
93             os << "INTERFACE_FUNCTION";
94             break;
95         case SIM_FUNCTION_NAME:
96             os << "SIM_FUNCTION_NAME";
97             break;
98         case SIM_FUNCTION_API:
99             os << "SIM_FUNCTION_API";
100             break;
101         case SIM_SCHEDULE:
102             os << "SIM_SCHEDULE";
103             break;
104         case ANGLE:
105             os << "ANGLE";
106             break;
107         case EXPRS:
108             os << "EXPRS";
109             break;
110         case ID:
111             os << "ID";
112             break;
113         case INPUTS:
114             os << "INPUTS";
115             break;
116         case OUTPUTS:
117             os << "OUTPUTS";
118             break;
119         case EVENT_INPUTS:
120             os << "EVENT_INPUTS";
121             break;
122         case EVENT_OUTPUTS:
123             os << "EVENT_OUTPUTS";
124             break;
125         case PARENT_BLOCK:
126             os << "PARENT_BLOCK";
127             break;
128         case CHILDREN:
129             os << "CHILDREN";
130             break;
131         case PORT_REFERENCE:
132             os << "PORT_REFERENCE";
133             break;
134         case DESTINATION_PORT:
135             os << "DESTINATION_PORT";
136             break;
137         case SOURCE_PORT:
138             os << "SOURCE_PORT";
139             break;
140         case CONTROL_POINTS:
141             os << "CONTROL_POINTS";
142             break;
143         case DATATYPE:
144             os << "DATATYPE";
145             break;
146         case SOURCE_BLOCK:
147             os << "SOURCE_BLOCK";
148             break;
149         case PORT_KIND:
150             os << "PORT_KIND";
151             break;
152         case IMPLICIT:
153             os << "IMPLICIT";
154             break;
155         case PORT_NUMBER:
156             os << "PORT_NUMBER";
157             break;
158         case CONNECTED_SIGNALS:
159             os << "CONNECTED_SIGNALS";
160             break;
161     }
162     return os;
163 }
164
165 static const bool USE_SCILAB_WRITE = true;
166
167 void LoggerView::objectCreated(const ScicosID& uid, kind_t k)
168 {
169     std::stringstream ss;
170
171     ss << __FUNCTION__ << "( " << uid << " , " << k << " )" << std::endl;
172
173     if (USE_SCILAB_WRITE)
174     {
175         scilabForcedWrite(ss.str().data());
176     }
177     else
178     {
179         std::cerr << ss.str();
180     }
181 }
182
183 void LoggerView::objectDeleted(const ScicosID& uid)
184 {
185     std::stringstream ss;
186
187     ss << __FUNCTION__ << "( " << uid << " )" << std::endl;
188
189     if (USE_SCILAB_WRITE)
190     {
191         scilabForcedWrite(ss.str().data());
192     }
193     else
194     {
195         std::cerr << ss.str();
196     }
197 }
198
199 void LoggerView::objectUpdated(const ScicosID& uid, kind_t k)
200 {
201     std::stringstream ss;
202
203     ss << __FUNCTION__ << "( " << uid << " , " << k << " )" << std::endl;
204
205     if (USE_SCILAB_WRITE)
206     {
207         scilabForcedWrite(ss.str().data());
208     }
209     else
210     {
211         std::cerr << ss.str();
212     }
213 }
214
215 void LoggerView::propertyUpdated(const ScicosID& uid, kind_t k, object_properties_t p)
216 {
217     // do not log anything on success; the message has already been logged
218 }
219
220 void LoggerView::propertyUpdated(const ScicosID& uid, kind_t k, object_properties_t p,
221                                  update_status_t u)
222 {
223     std::stringstream ss;
224
225     ss << __FUNCTION__ << "( " << uid << " , " << k << " , " << p << " ) : " << u << std::endl;
226
227     if (USE_SCILAB_WRITE)
228     {
229         scilabForcedWrite(ss.str().data());
230     }
231     else
232     {
233         std::cerr << ss.str();
234     }
235 }
236
237 } /* namespace org_scilab_modules_scicos */