X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=lib%2FcreaDevManagerLib%2FmodelCDMPackage.h;h=198e68bafb44e148097783444fba3af93452ae25;hb=0cc6a7e002ad79de9453517108d7456fd44ddfdb;hp=e18031a44d21775a4a592f58bfb812261843673a;hpb=58e994c7ddc088821aa0f583354216c6376405c8;p=crea.git diff --git a/lib/creaDevManagerLib/modelCDMPackage.h b/lib/creaDevManagerLib/modelCDMPackage.h index e18031a..198e68b 100644 --- a/lib/creaDevManagerLib/modelCDMPackage.h +++ b/lib/creaDevManagerLib/modelCDMPackage.h @@ -37,46 +37,179 @@ #include #include +#include #include"modelCDMFolder.h" -#include"modelCDMBlackBox.h" +#include"modelCDMPackageSrc.h" +/** + * Class representing a package of a Crea project. + */ class modelCDMPackage : public modelCDMFolder { public: + /** + * Default constructor. + */ modelCDMPackage(); - modelCDMPackage(const std::string& path, const int& level = 1); + /** + * Package node constructor. + * @param parent Parent node of the package folder node. + * @param path Full path to the package. + * @param name Name of the package folder. + * @param level Project hierarchy level of the package node. + */ + modelCDMPackage(modelCDMIProjectTreeNode* parent, const std::string& path, const std::string& name, const int& level = 1); + /** + * Destructor. + */ ~modelCDMPackage(); + /** + * Retrieves the name of the package. the name of the package can be different from the package folder name. + * @return Package name. + */ const std::string& GetNamePackage() const; + /** + * Retrieves the authors of the package. + * @return Package authors. + */ const std::string& GetAuthors() const; + /** + * Retrieves the Author e-mails of the package. + * @return Author e-mails. + */ const std::string& GetAuthorsEmail() const; + /** + * Retrieves the version of the package. + * @return Package version. + */ const std::string& GetVersion() const; + /** + * Retrieves the description of the package. + * @return Package description + */ const std::string& GetDescription() const; + /** + * Retrieves the src folder node of the package node. + * @return Reference to the package src file node. + */ + modelCDMPackageSrc* GetSrc() const; + /** + * Sets the name of the package authors. This operation affects the project model as well as the system files. + * @param authors Name of the package authors. + * @param result Result message + * @return True if the operation was successful. + */ bool SetAuthors(const std::string& authors, std::string*& result); + /** + * Sets the email of the package authors. This operation affects the project model as well as the system files. + * @param email + * @param result Result message + * @return True if the operation was successful. + */ bool SetAuthorsEmail(const std::string& email, std::string*& result); + /** + * Sets the version of the package. This operation affects the project model as well as the system files. + * @param version + * @param result Result message + * @return True if the operation was successful. + */ bool SetVersion(const std::string& version, std::string*& result); + /** + * Sets the description of the package. This operation affects the project model as well as the system files. + * @param description + * @param result Result message + * @return True if the operation was successful. + */ bool SetDescription(const std::string& description, std::string*& result); - bool CreateBlackBox( + /** + * Creates a new black box and returns a reference to it if the creation is successful. This operation affects the project model as well as the system files. + * @param result Result message + * @param name New black box name. + * @param type Black box type. + * @param format Black box format. + * @param categories Categories associated to this black box. + * @param authors Black box authors' name. + * @param authorsEmail Black box authors' email. + * @param description Black box description. + * @return True if the operation was successful. + */ + modelCDMBlackBox* CreateBlackBox( + std::string*& result, const std::string& name, + const std::string& type = "std", + const std::string& format = "C++", + const std::string& categories = "empty", const std::string& authors = "unknown", const std::string& authorsEmail = "", - const std::string& categories = "empty", const std::string& description = "no description" ); - bool OpenCMakeListsFile(std::string*& result); + /** + * Refreshes the structure of the package folder node. This method updates the properties of the package as well as it refreshes its children. + * @param result Result message + * @return True if the operation was successful. + */ virtual const bool Refresh(std::string*& result); + /** + * Checks the package structure with the CMakeLists file to look for project structure definition problems before compiling the project. + * @param properties Project properties. + */ + void CheckStructure(std::map& properties); + + /** + * Checks the package's CMakeLists file to check which third party libraries are enabled. + * @return A map with the name of the library and if it's included in the CMakeLists file. + */ + std::map Get3rdPartyLibraries(); + + /** + * Sets the 3rd party library inclusion in the CMakeLists file. + * @return if the operation was successful. + */ + bool Set3rdPartyLibrary(const std::string& library_name, const bool& toInclude); + + /** + * Checks the package CMakeLists file to check which custom libraries are enabled. + * @return A map with the name of the library and if it's included in the CMakeLists file. + */ + std::map GetCustomLibraries(); + + /** + * Sets the custom library inclusion in the CMakeLists file. + * @return if the operation was successful. + */ + bool SetCustomLibrary(const std::string& library_name, const bool& toInclude); + private: + /** + * Package name. + */ std::string namePackage; + /** + * Package authors' name. + */ std::string authors; + /** + * Package authors' e-mails. + */ std::string authorsEmail; + /** + * Package version. + */ std::string version; + /** + * Package description. + */ std::string description; - std::vector blackBoxes; + /** + * Reference to the package source folder. + */ + modelCDMPackageSrc* src; };