#include<iostream>
#include<vector>
+#include<map>
#include "modelCDMFolder.h"
#include "modelCDMLibrary.h"
+/**
+ * Class representing the lib folder of a Crea project.
+ */
class modelCDMLib : public modelCDMFolder
{
public:
+ /**
+ * Default Constructor.
+ */
modelCDMLib();
- modelCDMLib(const std::string& path, const int& level = 1);
+ /**
+ * 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();
+ /**
+ * 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;
};