CID1321282 fixed - Remove the default constructor
[scilab.git] / scilab / modules / scicos / src / cpp / model / Link.hxx
1 /*
2  *  Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
3  *  Copyright (C) 2014-2014 - Scilab Enterprises - Clement DAVID
4  *
5  * Copyright (C) 2012 - 2016 - Scilab Enterprises
6  *
7  * This file is hereby licensed under the terms of the GNU GPL v2.0,
8  * pursuant to article 5.3.4 of the CeCILL v.2.1.
9  * This file was originally licensed under the terms of the CeCILL v2.1,
10  * and continues to be available under such terms.
11  * For more information, see the COPYING file which you should have received
12  * along with this program.
13  *
14  */
15
16 #ifndef LINK_HXX_
17 #define LINK_HXX_
18
19 #include <string>
20 #include <vector>
21
22 #include "utilities.hxx"
23 #include "Model.hxx"
24 #include "model/BaseObject.hxx"
25
26 namespace org_scilab_modules_scicos
27 {
28 namespace model
29 {
30
31 /*
32  * List of all possible values for a Link.
33  */
34 enum link_kind_t
35 {
36     activation = -1,
37     regular = 1,
38     implicit = 2
39 };
40
41 class Link: public BaseObject
42 {
43 public:
44     Link() : BaseObject(LINK), m_parentDiagram(ScicosID()), m_parentBlock(ScicosID()), m_sourcePort(ScicosID()), m_destinationPort(ScicosID()), m_uid(), m_controlPoints(),
45         m_label(), m_style(), m_thick(2), m_color(1), m_linkKind(regular) {};
46     Link(const Link& o) : BaseObject(LINK), m_parentDiagram(o.m_parentDiagram), m_parentBlock(o.m_parentBlock), m_sourcePort(o.m_sourcePort), m_destinationPort(o.m_destinationPort),  m_uid(o.m_uid),
47         m_controlPoints(o.m_controlPoints), m_label(o.m_label), m_style(o.m_style), m_thick(o.m_thick), m_color(o.m_color), m_linkKind(o.m_linkKind) {};
48
49 private:
50     friend class ::org_scilab_modules_scicos::Model;
51
52     void getParentDiagram(ScicosID& v) const
53     {
54         v = m_parentDiagram;
55     }
56
57     update_status_t setParentDiagram(const ScicosID v)
58     {
59         if (v == m_parentDiagram)
60         {
61             return NO_CHANGES;
62         }
63
64         m_parentDiagram = v;
65         return SUCCESS;
66     }
67
68     void getParentBlock(ScicosID& v) const
69     {
70         v = m_parentBlock;
71     }
72
73     update_status_t setParentBlock(const ScicosID v)
74     {
75         if (v == m_parentBlock)
76         {
77             return NO_CHANGES;
78         }
79
80         m_parentBlock = v;
81         return SUCCESS;
82     }
83
84     void getControlPoints(std::vector<double>& v) const
85     {
86         v = m_controlPoints;
87     }
88
89     update_status_t setControlPoints(const std::vector<double>& v)
90     {
91         if (v == m_controlPoints)
92         {
93             return NO_CHANGES;
94         }
95
96         m_controlPoints = v;
97         return SUCCESS;
98     }
99
100     void getLabel(std::string& data) const
101     {
102         data = m_label;
103     }
104
105     update_status_t setLabel(const std::string& data)
106     {
107         if (data == m_label)
108         {
109             return NO_CHANGES;
110         }
111
112         m_label = data;
113         return SUCCESS;
114     }
115
116     void getStyle(std::string& data) const
117     {
118         data = m_style;
119     }
120
121     update_status_t setStyle(const std::string& data)
122     {
123         if (data == m_style)
124         {
125             return NO_CHANGES;
126         }
127
128         m_style = data;
129         return SUCCESS;
130     }
131
132     void getThick(std::vector<double>& v) const
133     {
134         v = m_thick;
135     }
136
137     update_status_t setThick(const std::vector<double>& v)
138     {
139         if (v.size() != 2)
140         {
141             return FAIL;
142         }
143
144         if (v == m_thick)
145         {
146             return NO_CHANGES;
147         }
148
149         m_thick = v;
150         return SUCCESS;
151     }
152
153     void getColor(int& c) const
154     {
155         c = m_color;
156     }
157
158     update_status_t setColor(const int c)
159     {
160         if (c == m_color)
161         {
162             return NO_CHANGES;
163         }
164
165         m_color = c;
166         return SUCCESS;
167     }
168
169     void getKind(int& k) const
170     {
171         k = m_linkKind;
172     }
173
174     update_status_t setKind(const int k)
175     {
176         if (k == m_linkKind)
177         {
178             return NO_CHANGES;
179         }
180
181         // Only accepting Scilab Link kind values
182         switch (k)
183         {
184             case activation:
185                 m_linkKind = activation;
186                 break;
187             case regular:
188                 m_linkKind = regular;
189                 break;
190             case implicit:
191                 m_linkKind = implicit;
192                 break;
193             default:
194                 return FAIL;
195         }
196         return SUCCESS;
197     }
198
199     void getSourcePort(ScicosID& sp) const
200     {
201         sp = m_sourcePort;
202     }
203
204     update_status_t setSourcePort(const ScicosID sp)
205     {
206         if (sp == m_sourcePort)
207         {
208             return NO_CHANGES;
209         }
210
211         m_sourcePort = sp;
212         return SUCCESS;
213     }
214
215     void getDestinationPort(ScicosID& dp) const
216     {
217         dp = m_destinationPort;
218     }
219
220     update_status_t setDestinationPort(const ScicosID dp)
221     {
222         if (dp == m_destinationPort)
223         {
224             return NO_CHANGES;
225         }
226
227         m_destinationPort = dp;
228         return SUCCESS;
229     }
230
231     void getUID(std::string& data) const
232     {
233         data = m_uid;
234     }
235
236     update_status_t setUID(const std::string& data)
237     {
238         if (data == m_uid)
239         {
240             return NO_CHANGES;
241         }
242
243         m_uid = data;
244         return SUCCESS;
245     }
246
247 private:
248     ScicosID m_parentDiagram;
249     ScicosID m_parentBlock;
250
251     ScicosID m_sourcePort;
252     ScicosID m_destinationPort;
253
254     std::string m_uid;
255     // used to store, user-defined control points
256     std::vector<double> m_controlPoints;
257
258     std::string m_label;
259     std::string m_style;
260     std::vector<double> m_thick;
261     int m_color;
262     link_kind_t m_linkKind;
263
264 };
265
266 } /* namespace model */
267 } /* namespace org_scilab_modules_scicos */
268
269 #endif /* LINK_HXX_ */