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:
///
{ 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<std::string> const & list() const { return lml_; }
/// 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
/// \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<std::string> removedModules);
+ std::list<std::string> const & removedModules);
private:
/// Removes modules excluded by, provided by, etc, the base class.
/// \param lay The document class against which to check.
///
std::list<std::string> lml_;
};
-}
+} // namespace lyx
#endif