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

Private GIT Repository
started to include patterns in implementation
[blast.git] / BlockParameter.h
1 #ifndef __BLOCKPARAMETER_H__\r
2 #define __BLOCKPARAMETER_H__\r
3 \r
4 #include <iostream>\r
5 #include <fstream>\r
6 \r
7 #include <QtCore>\r
8 \r
9 #include "AbstractBlock.h"\r
10 class AbstractBlock;\r
11 \r
12 using namespace std;\r
13 using namespace Qt;\r
14 \r
15 \r
16 class BlockParameter {\r
17 \r
18 public :\r
19 \r
20   enum ParamType { Expression = 1, Character, String, Bit, BitVector, Boolean, Integer, Natural, Positive, Real, Time};\r
21   // a bit ugly to put that here but more practical for using them\r
22   /*!\r
23    * \brief The ParamWBAccess enum\r
24    * Read means that the block setup the value of this parameter and it is possible to \r
25    * to read that value from outside the FPGA (via the wrapper of the wishbone). Thus,\r
26    * from the block point of view, the parameter corresponds to an output port.\r
27    * Write means that it is possible to setup the value of this paramter from outside the FPGA (via\r
28    * the wrapper of the wishbone) so that the block can read that value.  Thus,\r
29    * from the block point of view, the parameter corresponds to an input port.\r
30    */\r
31   enum ParamWBAccess { Read = 1, Write = 2};\r
32   enum ParamWBDuration { Permanent = 1, Trigger = 2 };\r
33   enum ParamVHDLContext { Entity = 1, Component = 2, Architecture = 3 }; // NB : 3 is when creating an instance of the block that owns this iface\r
34   enum ParamVHDLFlags { NoComma = 1 };\r
35 \r
36   BlockParameter();\r
37   BlockParameter(AbstractBlock* _owner, const QString& _name , const QString& _type, const QString& _value);\r
38 \r
39   virtual ~BlockParameter();\r
40 \r
41   // getters\r
42   inline AbstractBlock* getOwner() { return owner; }\r
43   inline QString getName() { return name; }\r
44   inline int getType() { return type; }\r
45   QString getTypeString();\r
46   virtual QVariant getValue(); // may be overriden\r
47   virtual QString getContext() = 0;\r
48 \r
49   // setters\r
50   inline void setOwner(AbstractBlock* _owner) { owner = _owner; }\r
51   inline void setName(const QString& _name) { name = _name; }\r
52   inline void setType(int _type) { type = _type; }\r
53   virtual void setValue(const QString& _value);\r
54 \r
55   // testers\r
56   virtual bool isValueSet(); // may be overridden for User and Generic parameters\r
57   virtual bool isUserParameter();\r
58   virtual bool isGenericParameter();\r
59   virtual bool isWishboneParameter();\r
60   virtual bool isPortParameter();\r
61 \r
62   // others\r
63   virtual BlockParameter* clone() = 0;\r
64   virtual QString toVHDL(int context, int flags);\r
65   int typeFromString(const QString& _type);\r
66 \r
67 protected:\r
68 \r
69   AbstractBlock* owner;\r
70   QString name;  \r
71   int type;\r
72   QVariant defaultValue; // the value set during construction\r
73 \r
74 };\r
75 \r
76 #endif // __BLOCKPARAMETER_H__\r
77 \r