Xcos MVC: add a test and use unnamed functions parameters
[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.1-en.txt
10  *
11  */
12
13 #include <iostream>
14 #include <sstream>
15 #include "scilabWrite.hxx"
16
17 #include "LoggerView.hxx"
18 #include "Controller.hxx"
19
20 namespace org_scilab_modules_scicos
21 {
22
23 LoggerView::LoggerView()
24 {
25 }
26
27 LoggerView::~LoggerView()
28 {
29 }
30
31 // generated with :
32 // awk ' $2 == "//!<" {sub(",","", $1); print "case " $1 ":\n    os << \"" $1 "\";\n    break;" }' ~/work/branches/YaSp/scilab/modules/scicos/includes/utilities.hxx
33
34 std::ostream& operator<<(std::ostream& os, update_status_t u)
35 {
36     switch (u)
37     {
38         case SUCCESS:
39             os << "SUCCESS";
40             break;
41         case NO_CHANGES:
42             os << "NO_CHANGES";
43             break;
44         case FAIL:
45             os << "FAIL";
46             break;
47     }
48     return os;
49 }
50
51 std::ostream& operator<<(std::ostream& os, kind_t k)
52 {
53     switch (k)
54     {
55         case ANNOTATION:
56             os << "ANNOTATION";
57             break;
58         case BLOCK:
59             os << "BLOCK";
60             break;
61         case DIAGRAM:
62             os << "DIAGRAM";
63             break;
64         case LINK:
65             os << "LINK";
66             break;
67         case PORT:
68             os << "PORT";
69             break;
70     }
71     return os;
72 }
73
74
75 std::ostream& operator<<(std::ostream& os, object_properties_t p)
76 {
77     switch (p)
78     {
79         case PARENT_DIAGRAM:
80             os << "PARENT_DIAGRAM";
81             break;
82         case GEOMETRY:
83             os << "GEOMETRY";
84             break;
85         case DESCRIPTION:
86             os << "DESCRIPTION";
87             break;
88         case FONT:
89             os << "FONT";
90             break;
91         case FONT_SIZE:
92             os << "FONT_SIZE";
93             break;
94         case RELATED_TO:
95             os << "RELATED_TO";
96             break;
97         case INTERFACE_FUNCTION:
98             os << "INTERFACE_FUNCTION";
99             break;
100         case SIM_FUNCTION_NAME:
101             os << "SIM_FUNCTION_NAME";
102             break;
103         case SIM_FUNCTION_API:
104             os << "SIM_FUNCTION_API";
105             break;
106         case SIM_SCHEDULE:
107             os << "SIM_SCHEDULE";
108             break;
109         case SIM_BLOCKTYPE:
110             os << "SIM_BLOCKTYPE";
111             break;
112         case SIM_DEP_UT:
113             os << "SIM_DEP_UT";
114             break;
115         case ANGLE:
116             os << "ANGLE";
117             break;
118         case EXPRS:
119             os << "EXPRS";
120             break;
121         case INPUTS:
122             os << "INPUTS";
123             break;
124         case OUTPUTS:
125             os << "OUTPUTS";
126             break;
127         case EVENT_INPUTS:
128             os << "EVENT_INPUTS";
129             break;
130         case EVENT_OUTPUTS:
131             os << "EVENT_OUTPUTS";
132             break;
133         case STATE:
134             os << "STATE";
135             break;
136         case DSTATE:
137             os << "DSTATE";
138             break;
139         case ODSTATE:
140             os << "ODSTATE";
141             break;
142         case NZCROSS:
143             os << "NZCROSS";
144             break;
145         case NMODE:
146             os << "NMODE";
147             break;
148         case RPAR:
149             os << "RPAR";
150             break;
151         case IPAR:
152             os << "IPAR";
153             break;
154         case OPAR:
155             os << "OPAR";
156             break;
157         case EQUATIONS:
158             os << "EQUATIONS";
159             break;
160         case UID:
161             os << "UID";
162             break;
163         case PARENT_BLOCK:
164             os << "PARENT_BLOCK";
165             break;
166         case CHILDREN:
167             os << "CHILDREN";
168             break;
169         case PORT_REFERENCE:
170             os << "PORT_REFERENCE";
171             break;
172         case STYLE:
173             os << "STYLE";
174             break;
175         case LABEL:
176             os << "LABEL";
177             break;
178         case DESTINATION_PORT:
179             os << "DESTINATION_PORT";
180             break;
181         case SOURCE_PORT:
182             os << "SOURCE_PORT";
183             break;
184         case CONTROL_POINTS:
185             os << "CONTROL_POINTS";
186             break;
187         case THICK:
188             os << "THICK";
189             break;
190         case COLOR:
191             os << "COLOR";
192             break;
193         case KIND:
194             os << "KIND";
195             break;
196         case FROM:
197             os << "FROM";
198             break;
199         case TO:
200             os << "TO";
201             break;
202         case DATATYPE:
203             os << "DATATYPE";
204             break;
205         case DATATYPE_ROWS:
206             os << "DATATYPE_ROWS";
207             break;
208         case DATATYPE_COLS:
209             os << "DATATYPE_COLS";
210             break;
211         case DATATYPE_TYPE:
212             os << "DATATYPE_TYPE";
213             break;
214         case FIRING:
215             os << "FIRING";
216             break;
217         case SOURCE_BLOCK:
218             os << "SOURCE_BLOCK";
219             break;
220         case PORT_KIND:
221             os << "PORT_KIND";
222             break;
223         case IMPLICIT:
224             os << "IMPLICIT";
225             break;
226         case PORT_NUMBER:
227             os << "PORT_NUMBER";
228             break;
229         case CONNECTED_SIGNALS:
230             os << "CONNECTED_SIGNALS";
231             break;
232         case TITLE:
233             os << "TITLE";
234             break;
235         case PATH:
236             os << "PATH";
237             break;
238         case PROPERTIES:
239             os << "PROPERTIES";
240             break;
241         case DIAGRAM_CONTEXT:
242             os << "CONTEXT";
243             break;
244         case VERSION_NUMBER:
245             os << "VERSION_NUMBER";
246             break;
247     }
248     return os;
249 }
250
251 static const bool USE_SCILAB_WRITE = true;
252
253 void LoggerView::objectCreated(const ScicosID& uid, kind_t k)
254 {
255     std::stringstream ss;
256
257     ss << __FUNCTION__ << "( " << uid << " , " << k << " )" << std::endl;
258
259     if (USE_SCILAB_WRITE)
260     {
261         scilabForcedWrite(ss.str().data());
262     }
263     else
264     {
265         std::cerr << ss.str();
266     }
267 }
268
269 void LoggerView::objectDeleted(const ScicosID& uid, kind_t k)
270 {
271     std::stringstream ss;
272
273     ss << __FUNCTION__ << "( " << uid << " , " << k << " )" << std::endl;
274
275     if (USE_SCILAB_WRITE)
276     {
277         scilabForcedWrite(ss.str().data());
278     }
279     else
280     {
281         std::cerr << ss.str();
282     }
283 }
284
285 void LoggerView::objectUpdated(const ScicosID& uid, kind_t k)
286 {
287     std::stringstream ss;
288
289     ss << __FUNCTION__ << "( " << uid << " , " << k << " )" << std::endl;
290
291     if (USE_SCILAB_WRITE)
292     {
293         scilabForcedWrite(ss.str().data());
294     }
295     else
296     {
297         std::cerr << ss.str();
298     }
299 }
300
301 void LoggerView::propertyUpdated(const ScicosID& /*uid*/, kind_t /*k*/, object_properties_t /*p*/)
302 {
303     // do not log anything on success; the message has already been logged
304 }
305
306 void LoggerView::propertyUpdated(const ScicosID& uid, kind_t k, object_properties_t p,
307                                  update_status_t u)
308 {
309     std::stringstream ss;
310
311     ss << __FUNCTION__ << "( " << uid << " , " << k << " , " << p << " ) : " << u << std::endl;
312
313     if (USE_SCILAB_WRITE)
314     {
315         scilabForcedWrite(ss.str().data());
316     }
317     else
318     {
319         std::cerr << ss.str();
320     }
321 }
322
323 } /* namespace org_scilab_modules_scicos */