006ef0a7a6f985103709ee972054f5676bcaeb6b
[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) {};
37     Port(const Port& o) : BaseObject(PORT), dataType(o.dataType), sourceBlock(o.sourceBlock), kind(o.kind), implicit(o.implicit) {};
38     ~Port() {};
39
40     const std::vector<ScicosID>& getConnectedSignals() const
41     {
42         return connectedSignals;
43     }
44
45     void setConnectedSignals(const std::vector<ScicosID>& connectedSignals)
46     {
47         this->connectedSignals = connectedSignals;
48     }
49
50     Datatype* getDataType() const
51     {
52         return dataType;
53     }
54
55     void setDataType(Datatype* dataType)
56     {
57         this->dataType = dataType;
58     }
59
60     portKind getKind() const
61     {
62         return kind;
63     }
64
65     void setKind(portKind kind)
66     {
67         this->kind = kind;
68     }
69
70     ScicosID getSourceBlock() const
71     {
72         return sourceBlock;
73     }
74
75     void setSourceBlock(ScicosID sourceBlock)
76     {
77         this->sourceBlock = sourceBlock;
78     }
79
80     void getImplicit(bool& v) const
81     {
82         v = implicit;
83     }
84
85     update_status_t setImplicit(bool implicit)
86     {
87         if (implicit == this->implicit)
88         {
89             return NO_CHANGES;
90         }
91         this->implicit = implicit;
92         return SUCCESS;
93     }
94
95 private:
96     Datatype* dataType;
97     ScicosID sourceBlock;
98     portKind kind;
99     bool implicit;
100
101     std::vector<ScicosID> connectedSignals;
102 };
103
104 } /* namespace model */
105 } /* namespace org_scilab_modules_scicos */
106
107 #endif /* PORT_HXX_ */