X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2FTocBackend.h;h=25b39c953876ee331e67e987a97bf1d862c965fd;hb=dbd627f5210d025bfc97ef8a94bbe90ff290c611;hp=c592f3d07c944a81d991056de48ce112f62995ef;hpb=9b19f9982a97e5cdedc3c8d147beba5bf5f6b5a4;p=lyx.git diff --git a/src/TocBackend.h b/src/TocBackend.h index c592f3d07c..25b39c9538 100644 --- a/src/TocBackend.h +++ b/src/TocBackend.h @@ -17,75 +17,75 @@ #define TOC_BACKEND_H #include -#include #include #include -#include "pariterator.h" +#include "ParIterator.h" + +#include "support/docstream.h" -class Buffer; -class LyXView; -class Paragraph; -class FuncRequest; -class LCursor; namespace lyx { +class Buffer; +class FuncRequest; + /// /** */ -class TocBackend +class TocItem { -public: + friend class TocBackend; +public: + /// Default constructor for STL containers. + TocItem() {} /// - /** - */ - class Item - { - friend class TocBackend; - friend bool operator==(Item const & a, Item const & b); - - public: - /// - Item( - ParConstIterator const & par_it = ParConstIterator(), - int d = -1, - std::string const & s = std::string()); - /// - ~Item() {} - /// - bool const isValid() const; - /// - int const id() const; - /// - int const depth() const; - /// - std::string const & str() const; - /// - std::string const asString() const; - /// set cursor in LyXView to this Item - void goTo(LyXView & lv_) const; - /// the action corresponding to the goTo above - FuncRequest action() const; - - protected: - /// Current position of item. - ParConstIterator par_it_; - - /// nesting depth - int depth_; - - /// Full item string - std::string str_; - }; - + TocItem(ParConstIterator const & par_it, + int depth, + docstring const & s + ); + /// + ~TocItem() {} + /// + int const id() const; + /// + int const depth() const; /// - typedef std::vector Toc; - typedef std::vector::const_iterator TocIterator; + docstring const & str() const; /// - typedef std::map TocList; + docstring const asString() const; + + /// the action corresponding to the goTo above + FuncRequest action() const; + +protected: + /// Current position of item. + ParConstIterator par_it_; + + /// nesting depth + int depth_; + + /// Full item string + docstring str_; +}; + +/// +typedef std::vector Toc; +typedef Toc::const_iterator TocIterator; +/// The ToC list. +/// A class and no typedef because we want to forward declare it. +class TocList : public std::map +{ +}; + + +/// +/** +*/ +class TocBackend +{ public: /// TocBackend(Buffer const * buffer = NULL): buffer_(buffer) {} @@ -95,42 +95,41 @@ public: void setBuffer(Buffer const * buffer) { buffer_ = buffer; } /// - bool addType(std::string const & type); - /// void update(); /// - TocList const & tocs() - { return tocs_; } + void updateItem(ParConstIterator const & pit); + /// - std::vector const & types() - { return types_; } + TocList const & tocs() const + { return tocs_; } + /// - Toc const & toc(std::string const & type); + Toc const & toc(std::string const & type) const; /// Return the first Toc Item before the cursor - TocIterator const item(std::string const & type, ParConstIterator const &); + TocIterator const item( + std::string const & type, ///< Type of Toc. + ParConstIterator const & ///< The cursor location in the document. + ) const; - void asciiTocList(std::string const & type, std::ostream & os) const; + void writePlaintextTocList(std::string const & type, odocstream & os) const; private: - /// - TocList tocs_; /// - std::vector types_; + TocList tocs_; /// Buffer const * buffer_; }; // TocBackend inline -bool operator==(TocBackend::Item const & a, TocBackend::Item const & b) +bool operator==(TocItem const & a, TocItem const & b) { - return a.id() == b.id() && a.str() == b.str(); - // No need to compare depth. + return a.id() == b.id() && a.str() == b.str() && a.depth() == b.depth(); } inline -bool operator!=(TocBackend::Item const & a, TocBackend::Item const & b) +bool operator!=(TocItem const & a, TocItem const & b) { return !(a == b); }