Salome HOME
merge from branch DEV tag mergeto_trunk_04apr08
[modules/yacs.git] / src / engine / OutPort.hxx
index 500c101c391f2a2afe5aaa374a550ba82f68bd39..0dec8538ea48ee752269e70bf7ba89d633e01f0d 100644 (file)
@@ -1,21 +1,34 @@
 #ifndef __OUTPORT_HXX__
 #define __OUTPORT_HXX__
 
-#include "Port.hxx"
+#include "DataPort.hxx"
 #include "Exception.hxx"
 
+#include <set>
+#include <vector>
+
 namespace YACS
 {
   namespace ENGINE
   {
     class InPort;
-    class OutPort : public virtual Port
+    class LinkInfo;
+    class OutPort : public virtual DataPort
     {
     protected:
-      OutPort(Node *node);
+      OutPort(const OutPort& other, Node *newHelder);
+      OutPort(const std::string& name, Node *node, TypeCode* type);
     public:
+      virtual void checkConsistency(LinkInfo& info) const;
+      virtual int edGetNumberOfOutLinks() const;
+      virtual std::set<InPort *> edSetInPort() const = 0;
+      virtual bool isAlreadyLinkedWith(InPort *with) const = 0;
+      virtual void getAllRepresented(std::set<OutPort *>& represented) const;
       virtual bool addInPort(InPort *inPort) throw(Exception) = 0;
-      virtual void removeInPort(InPort *inPort) throw(Exception) = 0;
+      virtual int removeInPort(InPort *inPort, bool forward) throw(Exception) = 0;
+      virtual ~OutPort();
+      std::vector<DataPort *> calculateHistoryOfLinkWith(InPort *end);
+      virtual std::string typeName() {return "YACS__ENGINE__OutPort";}
     };
   }
 }