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