CID1321282 fixed - Remove the default constructor
[scilab.git] / scilab / modules / scicos / src / cpp / model / Port.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 PORT_HXX_
17 #define PORT_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 class Port: public BaseObject
32 {
33 public:
34     Port() : BaseObject(PORT), m_uid(), m_dataType(0), m_sourceBlock(ScicosID()), m_kind(PORT_UNDEF), m_implicit(false),
35         m_style(), m_label(), m_firing(0)
36     {
37         m_connectedSignals = {ScicosID()};
38     }
39     Port(const Port& o) : BaseObject(PORT), m_uid(o.m_uid), m_dataType(o.m_dataType), m_sourceBlock(o.m_sourceBlock), m_kind(o.m_kind), m_implicit(o.m_implicit),
40         m_style(o.m_style), m_label(o.m_label), m_firing(0), m_connectedSignals(o.m_connectedSignals) {};
41
42 private:
43     friend class ::org_scilab_modules_scicos::Model;
44
45     void getUID(std::string& data) const
46     {
47         data = m_uid;
48     }
49
50     update_status_t setUID(const std::string& data)
51     {
52         if (data == m_uid)
53         {
54             return NO_CHANGES;
55         }
56
57         m_uid = data;
58         return SUCCESS;
59     }
60
61     const std::vector<ScicosID>& getConnectedSignals() const
62     {
63         return m_connectedSignals;
64     }
65
66     update_status_t setConnectedSignals(const std::vector<ScicosID>& connectedSignals)
67     {
68         if (this->m_connectedSignals == connectedSignals)
69         {
70             return NO_CHANGES;
71         }
72
73         this->m_connectedSignals = connectedSignals;
74         if (m_connectedSignals.empty())
75         {
76             m_connectedSignals = std::vector<ScicosID> (1, 0);
77         }
78         return SUCCESS;
79     }
80
81     void getDataType(std::vector<int>& v) const
82     {
83         if (m_dataType == 0)
84         {
85             // By default, size is set to [-1,1] and type to real (1)
86             v.resize(3, 1);
87             v[0] = -1;
88         }
89         else
90         {
91             v.resize(3);
92             v[0] = m_dataType->m_rows;
93             v[1] = m_dataType->m_columns;
94             v[2] = m_dataType->m_datatype_id;
95         }
96     }
97
98     update_status_t setDataType(Model* model, const std::vector<int>& v)
99     {
100         if (v.size() != 3)
101         {
102             return FAIL;
103         }
104
105         model::Datatype datatype = model::Datatype(v);
106         if (this->m_dataType != 0 && *this->m_dataType == datatype)
107         {
108             return NO_CHANGES;
109         }
110
111         this->m_dataType = model->flyweight(datatype);
112         return SUCCESS;
113     }
114
115     void getKind(int& k) const
116     {
117         k = m_kind;
118     }
119
120     update_status_t setKind(int k)
121     {
122         if (k < PORT_UNDEF || k > PORT_EOUT)
123         {
124             return FAIL;
125         }
126
127         if (k == m_kind)
128         {
129             return NO_CHANGES;
130         }
131
132         m_kind = static_cast<portKind>(k);
133         return SUCCESS;
134     }
135
136     void getSourceBlock(ScicosID& sb) const
137     {
138         sb = m_sourceBlock;
139     }
140
141     update_status_t setSourceBlock(const ScicosID sb)
142     {
143         if (sb == this->m_sourceBlock)
144         {
145             return NO_CHANGES;
146         }
147         this->m_sourceBlock = sb;
148         return SUCCESS;
149     }
150
151     void getImplicit(bool& v) const
152     {
153         v = m_implicit;
154     }
155
156     update_status_t setImplicit(bool implicit)
157     {
158         if (implicit == this->m_implicit)
159         {
160             return NO_CHANGES;
161         }
162         this->m_implicit = implicit;
163         return SUCCESS;
164     }
165
166     void getStyle(std::string& s) const
167     {
168         s = m_style;
169     }
170
171     update_status_t setStyle(const std::string& style)
172     {
173         if (style == this->m_style)
174         {
175             return NO_CHANGES;
176         }
177         this->m_style = style;
178         return SUCCESS;
179     }
180
181     void getLabel(std::string& l) const
182     {
183         l = m_label;
184     }
185
186     update_status_t setLabel(const std::string& label)
187     {
188         if (label == this->m_label)
189         {
190             return NO_CHANGES;
191         }
192         this->m_label = label;
193         return SUCCESS;
194     }
195
196     void getFiring(double& f) const
197     {
198         f = m_firing;
199     }
200
201     update_status_t setFiring(double firing)
202     {
203         if (firing == this->m_firing)
204         {
205             return NO_CHANGES;
206         }
207         this->m_firing = firing;
208         return SUCCESS;
209     }
210
211 private:
212     std::string m_uid;
213     Datatype* m_dataType;
214     ScicosID m_sourceBlock;
215     portKind m_kind;
216     bool m_implicit;
217     std::string m_style;
218     std::string m_label;
219     double m_firing;
220
221     std::vector<ScicosID> m_connectedSignals;
222 };
223
224 } /* namespace model */
225 } /* namespace org_scilab_modules_scicos */
226
227 #endif /* PORT_HXX_ */