Xcos MVC: implement firing / dep_ut / label / nzcross / nmode
[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 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 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 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 SIM_BLOCKTYPE:
105             os << "SIM_BLOCKTYPE";
106             break;
107         case SIM_DEP_UT:
108             os << "SIM_DEP_UT";
109             break;
110         case ANGLE:
111             os << "ANGLE";
112             break;
113         case EXPRS:
114             os << "EXPRS";
115             break;
116         case INPUTS:
117             os << "INPUTS";
118             break;
119         case OUTPUTS:
120             os << "OUTPUTS";
121             break;
122         case EVENT_INPUTS:
123             os << "EVENT_INPUTS";
124             break;
125         case EVENT_OUTPUTS:
126             os << "EVENT_OUTPUTS";
127             break;
128         case STATE:
129             os << "STATE";
130             break;
131         case DSTATE:
132             os << "DSTATE";
133             break;
134         case ODSTATE:
135             os << "ODSTATE";
136             break;
137         case NZCROSS:
138             os << "NZCROSS";
139             break;
140         case NMODE:
141             os << "NMODE";
142             break;
143         case PARENT_BLOCK:
144             os << "PARENT_BLOCK";
145             break;
146         case CHILDREN:
147             os << "CHILDREN";
148             break;
149         case PORT_REFERENCE:
150             os << "PORT_REFERENCE";
151             break;
152         case STYLE:
153             os << "STYLE";
154             break;
155         case LABEL:
156             os << "LABEL";
157             break;
158         case DESTINATION_PORT:
159             os << "DESTINATION_PORT";
160             break;
161         case SOURCE_PORT:
162             os << "SOURCE_PORT";
163             break;
164         case CONTROL_POINTS:
165             os << "CONTROL_POINTS";
166             break;
167         case DATATYPE:
168             os << "DATATYPE";
169             break;
170         case DATATYPE_ROWS:
171             os << "DATATYPE_ROWS";
172             break;
173         case DATATYPE_COLS:
174             os << "DATATYPE_COLS";
175             break;
176         case DATATYPE_TYPE:
177             os << "DATATYPE_TYPE";
178             break;
179         case FIRING:
180             os << "FIRING";
181             break;
182         case SOURCE_BLOCK:
183             os << "SOURCE_BLOCK";
184             break;
185         case PORT_KIND:
186             os << "PORT_KIND";
187             break;
188         case IMPLICIT:
189             os << "IMPLICIT";
190             break;
191         case PORT_NUMBER:
192             os << "PORT_NUMBER";
193             break;
194         case CONNECTED_SIGNALS:
195             os << "CONNECTED_SIGNALS";
196             break;
197     }
198     return os;
199 }
200
201 static const bool USE_SCILAB_WRITE = true;
202
203 void LoggerView::objectCreated(const ScicosID& uid, kind_t k)
204 {
205     std::stringstream ss;
206
207     ss << __FUNCTION__ << "( " << uid << " , " << k << " )" << std::endl;
208
209     if (USE_SCILAB_WRITE)
210     {
211         scilabForcedWrite(ss.str().data());
212     }
213     else
214     {
215         std::cerr << ss.str();
216     }
217 }
218
219 void LoggerView::objectDeleted(const ScicosID& uid)
220 {
221     std::stringstream ss;
222
223     ss << __FUNCTION__ << "( " << uid << " )" << std::endl;
224
225     if (USE_SCILAB_WRITE)
226     {
227         scilabForcedWrite(ss.str().data());
228     }
229     else
230     {
231         std::cerr << ss.str();
232     }
233 }
234
235 void LoggerView::objectUpdated(const ScicosID& uid, kind_t k)
236 {
237     std::stringstream ss;
238
239     ss << __FUNCTION__ << "( " << uid << " , " << k << " )" << std::endl;
240
241     if (USE_SCILAB_WRITE)
242     {
243         scilabForcedWrite(ss.str().data());
244     }
245     else
246     {
247         std::cerr << ss.str();
248     }
249 }
250
251 void LoggerView::propertyUpdated(const ScicosID& uid, kind_t k, object_properties_t p)
252 {
253     // do not log anything on success; the message has already been logged
254 }
255
256 void LoggerView::propertyUpdated(const ScicosID& uid, kind_t k, object_properties_t p,
257                                  update_status_t u)
258 {
259     std::stringstream ss;
260
261     ss << __FUNCTION__ << "( " << uid << " , " << k << " , " << p << " ) : " << u << std::endl;
262
263     if (USE_SCILAB_WRITE)
264     {
265         scilabForcedWrite(ss.str().data());
266     }
267     else
268     {
269         std::cerr << ss.str();
270     }
271 }
272
273 } /* namespace org_scilab_modules_scicos */