Xcos MVC: implement in_style / out_style / in_label / out_label / style
[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  *  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 #ifndef PORT_HXX_
14 #define PORT_HXX_
15
16 #include <vector>
17
18 #include "Model.hxx"
19 #include "model/BaseObject.hxx"
20
21 namespace org_scilab_modules_scicos
22 {
23 namespace model
24 {
25
26 enum portKind
27 {
28     UNDEF, IN, OUT, EIN, EOUT
29 };
30
31 class Port: public BaseObject
32 {
33     friend class ::org_scilab_modules_scicos::Model;
34
35 private:
36     Port() : BaseObject(PORT), dataType(0), sourceBlock(0), kind(UNDEF), implicit(false), style(), label(), connectedSignals() {};
37     Port(const Port& o) : BaseObject(PORT), dataType(o.dataType), sourceBlock(o.sourceBlock),
38         kind(o.kind), implicit(o.implicit), style(o.style), label(o.label), connectedSignals(o.connectedSignals) {};
39     ~Port() {};
40
41     const std::vector<ScicosID>& getConnectedSignals() const
42     {
43         return connectedSignals;
44     }
45
46     void setConnectedSignals(const std::vector<ScicosID>& connectedSignals)
47     {
48         this->connectedSignals = connectedSignals;
49     }
50
51     Datatype* getDataType() const
52     {
53         return dataType;
54     }
55
56     void setDataType(Datatype* dataType)
57     {
58         this->dataType = dataType;
59     }
60
61     portKind getKind() const
62     {
63         return kind;
64     }
65
66     void setKind(portKind kind)
67     {
68         this->kind = kind;
69     }
70
71     ScicosID getSourceBlock() const
72     {
73         return sourceBlock;
74     }
75
76     void setSourceBlock(ScicosID sourceBlock)
77     {
78         this->sourceBlock = sourceBlock;
79     }
80
81     void getImplicit(bool& v) const
82     {
83         v = implicit;
84     }
85
86     update_status_t setImplicit(bool implicit)
87     {
88         if (implicit == this->implicit)
89         {
90             return NO_CHANGES;
91         }
92         this->implicit = implicit;
93         return SUCCESS;
94     }
95
96     void getStyle(std::string& s) const
97     {
98         s = style;
99     }
100
101     update_status_t setStyle(const std::string& style)
102     {
103         if (style == this->style)
104         {
105             return NO_CHANGES;
106         }
107         this->style = style;
108         return SUCCESS;
109     }
110
111     void getLabel(std::string& l) const
112     {
113         l = style;
114     }
115
116     update_status_t setLabel(const std::string& label)
117     {
118         if (label == this->label)
119         {
120             return NO_CHANGES;
121         }
122         this->label = label;
123         return SUCCESS;
124     }
125
126 private:
127     Datatype* dataType;
128     ScicosID sourceBlock;
129     portKind kind;
130     bool implicit;
131     std::string style;
132     std::string label;
133
134     std::vector<ScicosID> connectedSignals;
135 };
136
137 } /* namespace model */
138 } /* namespace org_scilab_modules_scicos */
139
140 #endif /* PORT_HXX_ */