X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2FTocBackend.h;h=0671f046f039f8a5fbec4e688b7ff07a08f5ed20;hb=a8aa7feb8936b751f088a10764b1f3623f143c77;hp=1579cf2fdcd0b34ba9b9c3311a7add50f0b107a9;hpb=b032e2dfafbf1e86918dd0cd66e5de602edeee00;p=lyx.git diff --git a/src/TocBackend.h b/src/TocBackend.h index 1579cf2fdc..0671f046f0 100644 --- a/src/TocBackend.h +++ b/src/TocBackend.h @@ -21,12 +21,11 @@ #include "Toc.h" #include "support/strfwd.h" +#include "support/unique_ptr.h" #include -using std::shared_ptr; - namespace lyx { class Buffer; @@ -74,12 +73,11 @@ public: TocItem() : dit_(0), depth_(0), output_(false) {} /// TocItem(DocIterator const & dit, - int depth, - docstring const & s, - bool output_active, - docstring const & t = docstring(), - FuncRequest action = FuncRequest(LFUN_UNKNOWN_ACTION) - ); + int depth, + docstring const & s, + bool output_active, + docstring const & t = docstring(), + FuncRequest action = FuncRequest(LFUN_UNKNOWN_ACTION)); /// ~TocItem() {} /// @@ -125,13 +123,13 @@ private: class TocBuilder { public: - TocBuilder(shared_ptr const toc); + TocBuilder(std::shared_ptr const toc); /// When entering a float void pushItem(DocIterator const & dit, docstring const & s, - bool output_active, bool is_captioned = false); + bool output_active, bool is_captioned = false); /// When encountering a caption void captionItem(DocIterator const & dit, docstring const & s, - bool output_active); + bool output_active); /// When exiting a float void pop(); private: @@ -142,30 +140,13 @@ private: bool is_captioned; }; /// - shared_ptr const toc_; + std::shared_ptr const toc_; /// std::stack stack_; }; -/// -class TocBuilderStore -{ -public: - TocBuilderStore() {}; - /// - shared_ptr get(std::string const & type, shared_ptr toc); - /// - void clear() { map_.clear(); }; -private: - typedef std::map> map_t; - map_t map_; -}; - - -/// -/** -*/ +/// Class to build and access the Tocs of a particular buffer. class TocBackend { public: @@ -186,15 +167,17 @@ public: /// TocList const & tocs() const { return tocs_; } /// never null - shared_ptr toc(std::string const & type) const; - shared_ptr toc(std::string const & type); - /// nevel null - shared_ptr builder(std::string const & type); - /// Return the first Toc Item before the cursor - Toc::const_iterator item( - std::string const & type, ///< Type of Toc. - DocIterator const & dit ///< The cursor location in the document. - ) const; + std::shared_ptr toc(std::string const & type) const; + /// never null + std::shared_ptr toc(std::string const & type); + /// \return the current TocBuilder for the Toc of type \param type, or + /// creates one if it does not already exist. + TocBuilder & builder(std::string const & type); + /// \return the first Toc Item before the cursor. + /// \param type: Type of Toc. + /// \param dit: The cursor location in the document. + Toc::const_iterator + item(std::string const & type, DocIterator const & dit) const; /// void writePlaintextTocList(std::string const & type, @@ -206,7 +189,7 @@ private: /// TocList tocs_; /// - TocBuilderStore builders_; + std::map> builders_; /// Buffer const * buffer_; }; // TocBackend