X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2FLayoutModuleList.h;h=babd76022986387e12c1962ff2ba548c5c044b4f;hb=90ea50811191dc891d2b3407c01527f1f2d745dd;hp=d2a3efc181f28a38a16273e194086d3bba54d1d4;hpb=f946b6ed0bb582d0d8cd2775459ea2c001bfca47;p=features.git diff --git a/src/LayoutModuleList.h b/src/LayoutModuleList.h index d2a3efc181..babd760229 100644 --- a/src/LayoutModuleList.h +++ b/src/LayoutModuleList.h @@ -1,10 +1,10 @@ // -*- C++ -*- /** - * \file ModuleList.h + * \file LayoutModuleList.h * This file is part of LyX, the document processor. * Licence details can be found in the file COPYING. * - * \author Richard Heck + * \author Richard Kimberly Heck * * Full author contact details are available in file CREDITS. */ @@ -19,6 +19,12 @@ namespace lyx { class LayoutFile; +/** + Represents a list of modules, such as might be associated with + a particular document. Provides methods for adding modules, checking + if a module can be added, and, importantly, adapting the list to a + new DocumentClass. +*/ class LayoutModuleList { public: /// @@ -44,14 +50,19 @@ public: { return lml_.insert(pos, str); } /// void push_back(std::string const & str) { lml_.push_back(str); } - /// + /// size_t size() const { return lml_.size(); } /// This is needed in GuiDocument. It seems better than an /// implicit conversion. std::list const & list() const { return lml_; } + /// List of modules as a comma-separated string + std::string asString() const; /// Checks to make sure module's requriements are satisfied, that it does /// not conflict with already-present modules, isn't already loaded, etc. - bool moduleCanBeAdded(std::string const & modName, + bool moduleCanBeAdded(std::string const & modName, + LayoutFile const * const lay) const; + /// Like !moduleCanBeAdded(), but does not check requirements + bool moduleConflicts(std::string const & modName, LayoutFile const * const lay) const; /// If the user changes the base class for a given document, then the /// associated module list has to be updated. This just calls @@ -65,7 +76,15 @@ public: /// \return true if no changes had to be made, false if some did have /// to be made. bool adaptToBaseClass(LayoutFile const * const lay, - std::list removedModules); + std::list const & removedModules); + /// + bool operator==(LayoutModuleList const & other) const { + return lml_ == other.lml_; + } + /// + bool operator!=(LayoutModuleList const & other) const { + return !operator==(other); + } private: /// Removes modules excluded by, provided by, etc, the base class. /// \param lay The document class against which to check. @@ -87,5 +106,5 @@ private: /// std::list lml_; }; -} +} // namespace lyx #endif