]> Creatis software - crea.git/blobdiff - lib/creaDevManagerLib/modelCDMLib.h
Feature #1711 CreaDevManager application implementation
[crea.git] / lib / creaDevManagerLib / modelCDMLib.h
index 2a7e16459b265953eef96c0c8c7b3cff77e76285..d8b8c27fbf0110292d652249de370b0a29d82905 100644 (file)
 
 #include<iostream>
 #include<vector>
+#include<map>
 
-#include "modelCDMIProjectTreeNode.h"
+#include "modelCDMFolder.h"
 #include "modelCDMLibrary.h"
 
-class modelCDMLib : public modelCDMIProjectTreeNode
+/**
+ * Class representing the lib folder of a Crea project.
+ */
+class modelCDMLib : public modelCDMFolder
 {
 public:
+  /**
+   * Default Constructor.
+   */
   modelCDMLib();
+  /**
+   * Lib folder node constructor.
+   * @param parent Parent node of the lib folder node.
+   * @param path Full path to the lib folder node.
+   * @param name Name of the lib folder node. By default "lib".
+   * @param level Project hierarchy level of the lib folder node.
+   */
+  modelCDMLib(modelCDMIProjectTreeNode* parent, const std::string& path, const std::string& name = "lib", const int& level = 1);
+  /**
+   * Destructor.
+   */
   ~modelCDMLib();
 
-  bool CreateLibrary(
+  /**
+   * Returns the libraries registered in the lib folder.
+   * @return Array of library references.
+   */
+  const std::vector<modelCDMLibrary*>& GetLibraries() const;
+
+  /**
+   * Creates a new library node for the actual project and registers it. It modifies the project model as well as the system. The created library is included in the lib's CMakeLists file.
+   * @param name Name of the new library.
+   * @param result Result message.
+   * @return New library reference.
+   */
+  modelCDMLibrary* CreateLibrary(
       const std::string& name,
-      std::string*& result,
-      const std::string& path = "/"
+      std::string*& result
   );
-  bool OpenCMakeListsFile(std::string*& result);
+
+  /**
+   * Refreshes the structure of the lib folder. Deletes folders and files deleted since the las refresh and Adds folders and files created since the las refresh.
+   * @param result Result message.
+   * @return True if the operation was successful.
+   */
   virtual const bool Refresh(std::string*& result);
 
+  /**
+   * Checks the file structure and the CMakeLists file to find structure definition errors before compiling the project.
+   * @param properties Properties of the project.
+   */
+  void CheckStructure(std::map<std::string, bool>& properties);
+
+  /**
+   * Checks if the given library is included in the CMakeLists file.
+   * @param library_name Name of the library to check.
+   * @return True if the library is included, otherwise returns False.
+   */
+  bool IsLibraryIncluded(const std::string& library_name);
+
+  /**
+   * Sets the inclusion of the library in the lib's CMakeLists file. If the library inclusion already exist in file, then the line is uncommented/commented depending on the requested action. If the library inclusion doesn't exist yet, then it is included if the request is an inclusion.
+   * @param library_name Name of the library to include/exclude.
+   * @param toInclude True if the request is an inclusion, False otherwise.
+   * @return True if the request was processed successfully.
+   */
+  bool SetLibraryInclude(const std::string& library_name, const bool& toInclude);
+
 private:
+  /**
+   * Libraries references.
+   */
   std::vector<modelCDMLibrary*> libraries;
 };