Version: 9.16.0
DataPort.cxx
Go to the documentation of this file.
1// Copyright (C) 2006-2026 CEA, EDF
2//
3// This library is free software; you can redistribute it and/or
4// modify it under the terms of the GNU Lesser General Public
5// License as published by the Free Software Foundation; either
6// version 2.1 of the License, or (at your option) any later version.
7//
8// This library is distributed in the hope that it will be useful,
9// but WITHOUT ANY WARRANTY; without even the implied warranty of
10// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
11// Lesser General Public License for more details.
12//
13// You should have received a copy of the GNU Lesser General Public
14// License along with this library; if not, write to the Free Software
15// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
16//
17// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
18//
19
20#include "DataPort.hxx"
21#include "TypeCode.hxx"
22#include <iostream>
23
24using namespace YACS::ENGINE;
25using namespace std;
26
27const char DataPort::NAME[]="DataPort";
28
29DataPort::~DataPort()
30{
31 if(_type)
32 _type->decrRef();
33}
34
35DataPort::DataPort(const std::string& name, Node *node, TypeCode* type):Port(node),_name(name),_type(type)
36{
37 if(_type)
38 _type->incrRef();
39}
40
41DataPort::DataPort(const DataPort& other, Node *newHelder):Port(other,newHelder),_name(other._name),_type(other._type)
42{
43 if(_type)
44 _type->incrRef();
45}
46
48{
49 if(_type)
50 _type->decrRef();
51 _type=type;
52 if(_type)
53 _type->incrRef();
54}
55
57{
58 return NAME;
59}
60
61bool DataPort::isDifferentTypeOf(const DataPort *other) const
62{
63 return getTypeOfChannel()!=other->getTypeOfChannel();
64}
65
70DataPort *DataPort::isCrossingType(const std::vector<DataPort *>& historyOfLink)
71{
72 vector<DataPort *>::const_reverse_iterator iter=historyOfLink.rbegin()+1;
73 const DataPort *base=historyOfLink.back();
74 for(;iter!=historyOfLink.rend();iter++)
75 if(base->isDifferentTypeOf(*iter))
76 return *iter;
77 return 0;
78}
79
81
85{
86 return "";
87}
DataPort(const DataPort &other, Node *newHelder)
Definition: DataPort.cxx:41
virtual std::string getAsString()
returns port value as a string that can be used in a GUI for example
Definition: DataPort.cxx:84
void edSetType(TypeCode *type)
Definition: DataPort.cxx:47
bool isDifferentTypeOf(const DataPort *other) const
Definition: DataPort.cxx:61
virtual TypeOfChannel getTypeOfChannel() const =0
returns type of channel the port will use for data exchange on runtime : DATAFLOW or DATASTREAM.
static const char NAME[]
Definition: DataPort.hxx:47
std::string getNameOfTypeOfCurrentInstance() const
Definition: DataPort.cxx:56
static DataPort * isCrossingType(const std::vector< DataPort * > &historyOfLink)
Definition: DataPort.cxx:70
Base class for all nodes.
Definition: Node.hxx:70
Base class for all ports.
Definition: Port.hxx:43
Base class for all type objects.
Definition: TypeCode.hxx:68