Salome HOME
merge from branch DEV tag mergeto_trunk_04apr08
[modules/yacs.git] / src / engine / StaticDefinedComposedNode.hxx
1 #ifndef __STATICDEFINEDCOMPOSEDNODE_HXX__
2 #define __STATICDEFINEDCOMPOSEDNODE_HXX__
3
4 #include "ComposedNode.hxx"
5
6 namespace YACS
7 {
8   namespace ENGINE
9   {
10     /*!
11      * Abstract class, that factorizes all the treatments relative to resource management for ComposedNode that have
12      * their connectivity fully defined before launching ; which is not always the case for classes inheriting from DynParaLoop.
13      */
14     class StaticDefinedComposedNode : public ComposedNode
15     {
16     protected:
17       StaticDefinedComposedNode(const std::string& name);
18       StaticDefinedComposedNode(const StaticDefinedComposedNode& other, ComposedNode *father);
19     public:
20       bool isPlacementPredictableB4Run() const;
21       bool isMultiplicitySpecified(unsigned& value) const;
22       void forceMultiplicity(unsigned value);
23     protected:
24       void checkControlDependancy(OutPort *start, InPort *end, bool cross,
25                                   std::map < ComposedNode *,  std::list < OutPort * >, SortHierarc >& fw,
26                                   std::vector<OutPort *>& fwCross,
27                                   std::map< ComposedNode *, std::list < OutPort *>, SortHierarc >& bw,
28                                   LinkInfo& info) const;
29     };
30   }
31 }
32
33 #endif