]> AND Private Git Repository - blast.git/blob - GroupBlock.h
Logo AND Algorithmique Numérique Distribuée

Private GIT Repository
593b8541bde4b74008387e7ea68c90f31969ceff
[blast.git] / GroupBlock.h
1 #ifndef __GROUPBLOCK_H__
2 #define __GROUPBLOCK_H__
3
4 #include <iostream>
5
6 #include <QtCore>
7
8 #include "AbstractBlock.h"
9 class AbstractBlock;
10 #include "Exception.h"
11 class Exception;
12
13 using namespace std;
14 using namespace Qt;
15
16
17 class GroupBlock : public AbstractBlock {
18 public:
19
20   GroupBlock(GroupBlock* _parent) throw(Exception);
21   virtual ~GroupBlock();
22
23   // getters
24   inline QList<AbstractBlock*> getBlocks() { return blocks; }
25   // setters
26   void setParent(AbstractBlock *_parent);
27
28   // testers
29   bool isGroupBlock();
30   bool isTopGroupBlock();
31   inline bool isTop() { return topGroup; }
32
33   // others
34   inline void addBlock(AbstractBlock* block) { blocks.append(block); }
35   void removeBlock(AbstractBlock* block);
36   AbstractBlock* getFunctionalBlockByName(QString name);
37   
38   void removeAllBlocks();
39   void parametersValidation(QList<AbstractBlock *> *checkedBlocks, QList<AbstractBlock*>* blocksToConfigure);  
40   void addGenericParameter(QString name, QString type, QString value);
41   void removeGenericParameter(QString name);
42   // public attributes
43   static int counter;
44
45   bool computeOutputPattern(int nbExec = -1);
46   
47 private:    
48   // patterns  
49   /*!
50    * \brief initInputPattern
51    * Since input GroupInterface are just tunnels to input interfaces of inner blocks, they must
52    * have an output pattern that can be provided to inner interfaces. That outpu pattern is just
53    * found by taking the output pattern of the connectedFrom interface.
54    */   
55   void initInputPattern();
56   
57   
58   bool topGroup;  
59   QList<AbstractBlock*> blocks; // contains instances of FunctionalBlock or GroupBlock that are children of this group
60
61 };
62
63 #endif // __GROUPBLOCK_H__