class LayoutFile;
/**
- Represents a list of modules, such as might be associated with
+ 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
+ if a module can be added, and, importantly, adapting the list to a
new DocumentClass.
*/
class LayoutModuleList {
{ 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
/// to be made.
bool adaptToBaseClass(LayoutFile const * const lay,
std::list<std::string> 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.
///
std::list<std::string> lml_;
};
-}
+} // namespace lyx
#endif