+
+class LyXModule {
+public:
+ ///
+ LyXModule(std::string const & name, std::string const & id,
+ std::string const & description,
+ std::vector<std::string> const & packagelist,
+ std::vector<std::string> const & requires,
+ std::vector<std::string> const & excludes,
+ std::string const & catgy);
+ /// whether the required packages are available
+ bool isAvailable() const;
+ /// the missing prerequisites, if any
+ std::vector<std::string> prerequisites() const;
+ ///
+ std::string const & getName() const { return name_; }
+ ///
+ std::string const & getID() const { return id_; }
+ ///
+ std::string const & getFilename() const { return filename_; }
+ ///
+ std::string const & getDescription() const { return description_; }
+ ///
+ std::vector<std::string> const & getPackageList() const
+ { return package_list_; }
+ ///
+ std::vector<std::string> const & getRequiredModules() const
+ { return required_modules_; }
+ /// Modules this one excludes: the list should be treated disjunctively
+ std::vector<std::string> const & getExcludedModules() const
+ { return excluded_modules_; }
+ ///
+ std::string category() const { return category_; }
+ /// \return true if the module is compatible with this one, i.e.,
+ /// it does not exclude us and we do not exclude it.
+ /// this will also return true if modname is unknown and we do not
+ /// exclude it, since in that case we cannot check its exclusions.
+ bool isCompatible(std::string const & modname) const;
+ ///
+ static bool areCompatible(std::string const & mod1, std::string const & mod2);
+private: