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