#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();
+ /**
+ * 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.
+ * @param name Name of the new library.
+ * @param result Result message.
+ * @return New library reference.
+ */
modelCDMLibrary* CreateLibrary(
const std::string& name,
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);
+
private:
+ /**
+ * Libraries references.
+ */
std::vector<modelCDMLibrary*> libraries;
};