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

Private GIT Repository
started to code clkconvert output gen
[blast.git] / Parameters.h
index 8393a79deea8cda901fccaec8e38ccdca5b63074..bf679fc2a41b9c71e4ce080da4217984c2de25d9 100644 (file)
@@ -16,12 +16,15 @@ class ReferenceBlock;
 class GroupBlock;\r
 class FunctionalBlock;\r
 class GroupScene;\r
+class AbstractBoxItem;\r
 class GroupItem;\r
 class BoxItem;\r
 class InterfaceItem;\r
 class Graph;\r
+class GroupWidget;\r
 \r
 #include "BlockImplementation.h"\r
+#include "ExternalResource.h"\r
 \r
 #include "Exception.h"\r
 class Exception;\r
@@ -35,6 +38,13 @@ class Exception;
 using namespace std;\r
 using namespace Qt;\r
 \r
+/*!\r
+ * \brief The Parameters class\r
+ *\r
+ * Parameters class represents the Model part of blast in MVC paradigm.\r
+ * It contains all data necessary to create a design: the graph of blocks,\r
+ * the scenes, ...\r
+ */\r
 class Parameters {\r
 \r
 public :\r
@@ -69,15 +79,25 @@ public :
   inline void setCursorState(CursorState state) { cursorState = state; }\r
   inline void setDispatcher(Dispatcher* _dispatcher) { dispatcher = _dispatcher;}\r
 \r
+  // testers\r
+\r
+  // others\r
+  static QString normalizeName(const QString& name);\r
+  QList<ExternalResource*> searchResourceByName(const QString& name);\r
+\r
   /***************************************************\r
     attributes that are general to the application\r
   ***************************************************/  \r
   BlockLibraryTree* categoryTree;\r
   QList<QString> refPathes;\r
   QList<QString> implPathes;\r
+  QList<QString> sourcePathes;\r
   QList<ReferenceBlock*> availableBlocks;\r
   QList<BlockImplementation*> availableImplementations;\r
+  QList<ExternalResource*> availableResources;\r
 \r
+  ReferenceBlock* delayRef;\r
+  BlockImplementation* delayImpl;  \r
 \r
   QString refLib;\r
   QString implLib;\r
@@ -85,6 +105,8 @@ public :
   // defaults for vhdl\r
   int wbDataWidth;\r
   int wbAddressWidth;\r
+  QString validityExtension; //! the string to add to ports to obtain the name of the associated validity port.\r
+  \r
   // defaults for scene elements\r
   int defaultBlockWidth;\r
   int defaultBlockHeight;\r
@@ -98,40 +120,51 @@ public :
   QString defaultIfaceFontName;\r
   int defaultIfaceFontSize;\r
   int connGapLength;\r
-  QPainterPath inArrow;\r
-  QPainterPath outArrow;\r
+  QPainterPath dataArrowIn;\r
+  QPainterPath dataArrowOut;\r
+  QPainterPath clkrstArrow;\r
+\r
 \r
   /***************************************************\r
    attributes that are specific for the current project\r
   ****************************************************/\r
+  bool isCurrentProject; // true if a projet is currently open\r
   int sceneMode; // takes values from MODE_XXX\r
   CursorState cursorState;\r
   EditState editState; // takes values from EDIT_STATE_XXX\r
   bool unsaveModif;\r
   bool isRstClkShown;\r
+  QMap<FunctionalBlock*, BoxItem*> blockToItem; // allow to retrieve a box item from a functionnal block\r
+  QString projectPath;\r
+  QString projectName;\r
+  QString projectFile; // equals to projectPath/projectName.xml\r
+  bool autoConnMainClk; // true if auto-connection to main clock (i.e. ext_clk)\r
+  QList<double> clocks; // clocks[0] is the main clock.\r
 \r
-  Graph* createGraph();\r
+  Graph* createGraph(bool createTopGroupIfaces = true);\r
   void destroyGraph();\r
-  inline Graph* getGraph() { return graph; }\r
-  GroupBlock* addGroupBlock(); // adding an empty GroupBlock to the current group\r
-  FunctionalBlock* addFunctionalBlock(int idCategory, int idBlock); // adding a functional block to current group\r
-  FunctionalBlock* duplicateFunctionalBlock(FunctionalBlock* block); // adding a copy of a functional block to current group\r
-\r
+  inline Graph* getGraph() { return graph; }  \r
+  ReferenceBlock* getReferenceBlock(int idCategory, int idBlock); // get the reference block from its category and index\r
+  ReferenceBlock* getHiddenReferenceBlock(QString blockName); // get a hidden block by name, i.e. in category 100  \r
+  double getFeedingClockFrequency(AbstractInterface* iface); // determine at which freq. is synchronized iface\r
 \r
   void clear();\r
 \r
   QDomElement openProjectFile(const QString& projectFileName) throw(Exception);\r
-  void loadProject(QDomElement root);\r
+  GroupWidget *loadProject(QDomElement root) throw(Exception);\r
 \r
   void loadBlastConfiguration(QString confFile) throw(Exception);\r
   void loadReferencesFromXml() throw(Exception);\r
   void loadReferencesFromLib() throw(Exception);\r
   void saveReferencesToLib() throw(Exception);\r
+  void createDelayBlock();\r
 \r
   void loadImplementationsFromXml() throw(Exception);\r
   void loadImplementationsFromLib() throw(Exception);\r
   void saveImplementationsToLib() throw(Exception);\r
 \r
+  void loadSources() throw(Exception);\r
+\r
   void addAvailableBlock(ReferenceBlock *block);  \r
   void parametersValidation();\r
   void connectionsValidation();\r
@@ -143,10 +176,12 @@ public :
   ReferenceBlock* searchBlockByXml(QString xmlName);\r
   ReferenceBlock* searchBlockByMd5(QString sumMd5);\r
 \r
+  BoxItem* searchFunctionalBlock(AbstractBlock* block);\r
+\r
   void save(QString confFile);\r
 \r
 \r
-  QString projectPath;\r
+\r
 \r
 private:\r
   Graph* graph; // the graph model of blocks\r
@@ -159,6 +194,7 @@ private:
 \r
   GroupScene* searchSceneById(int id, GroupScene* scene);\r
   BoxItem* searchBlockItemById(int id, GroupScene* scene);\r
+  BoxItem* searchFunctionalBlockRecur(AbstractBlock* block, GroupScene* scene);\r
   GroupItem* searchGroupItemById(int id, GroupScene* scene);\r
   InterfaceItem* searchInterfaceItemById(int id, GroupScene *scene);\r
 \r