]> git.lyx.org Git - lyx.git/blobdiff - src/InsetList.h
ctests: categorize #12708 test file as resolved
[lyx.git] / src / InsetList.h
index f7fd23f4e2b27623d6518053c74f2e7f04d6540c..708eab86fa0377ca7bd56e6bfc10ebfb820594c3 100644 (file)
@@ -1,28 +1,56 @@
 // -*- C++ -*-
+/**
+ * \file InsetList.h
+ * This file is part of LyX, the document processor.
+ * Licence details can be found in the file COPYING.
+ *
+ * \author Lars Gullik Bjønnes
+ *
+ * Full author contact details are available in file CREDITS.
+ */
 
 #ifndef INSET_LIST_H
 #define INSET_LIST_H
 
+#include "insets/InsetCode.h"
+
 #include "support/types.h"
 
-class InsetOld;
-class BufferView;
+#include <vector>
+
+
+namespace lyx {
 
+class Inset;
+class Buffer;
 
 ///
 class InsetList {
 public:
        ///
-       struct InsetTable {
+       InsetList() {}
+       ///
+       InsetList(InsetList const &);
+       /// Partial copy constructor.
+       /// Copy the InsetList contents from \p beg to \p end (without end).
+       InsetList(InsetList const &, pos_type beg, pos_type end);
+       ///
+       void setBuffer(Buffer &);
+       ///
+       void resetBuffer();
+
+       ///
+       class Element {
+       public:
                ///
-               lyx::pos_type pos;
+               Element(pos_type p, Inset * i) : pos(p), inset(i) {}
                ///
-               InsetOld * inset;
+               pos_type pos;
                ///
-               InsetTable(lyx::pos_type p, InsetOld * i) : pos(p), inset(i) {}
+               Inset * inset;
        };
        ///
-       typedef std::vector<InsetTable> List;
+       typedef std::vector<Element> List;
        ///
        typedef List::iterator iterator;
        ///
@@ -31,35 +59,53 @@ public:
        ///
        ~InsetList();
        ///
-       iterator begin();
+       iterator begin() { return list_.begin(); }
        ///
-       iterator end();
+       iterator end() { return list_.end(); }
        ///
-       const_iterator begin() const;
+       const_iterator begin() const { return list_.begin(); }
        ///
-       const_iterator end() const;
+       const_iterator end() const { return list_.end(); }
        ///
-       iterator insetIterator(lyx::pos_type pos);
+       bool empty() const { return list_.empty(); }
        ///
-       void insert(InsetOld * inset, lyx::pos_type pos);
+       iterator insetIterator(pos_type pos);
        ///
-       void erase(lyx::pos_type pos);
+       const_iterator insetIterator(pos_type pos) const;
        ///
-       InsetOld * release(lyx::pos_type);
+       void insert(Inset * inset, pos_type pos);
        ///
-       InsetOld * get(lyx::pos_type pos) const;
+       void erase(pos_type pos);
        ///
-       void increasePosAfterPos(lyx::pos_type pos);
+       Inset * release(pos_type);
        ///
-       void decreasePosAfterPos(lyx::pos_type pos);
+       Inset * get(pos_type pos) const;
        ///
-       void deleteInsetsLyXText(BufferView * bv);
+       void increasePosAfterPos(pos_type pos);
        ///
-       void InsetList::insetsOpenCloseBranch(BufferView * bv);
+       void decreasePosAfterPos(pos_type pos);
+
+       /// search for next occurence of an \c Inset type.
+       /// \return the position of the found inset.
+       /// \retval -1 if no \c Inset is found.
+       pos_type find(
+               InsetCode code, ///< Code of inset to find.
+               pos_type startpos = 0 ///< start position for the search.
+               ) const;
+
+       /// count occurrences of an \c Inset type.
+       /// \return the number of found inset(s).
+       int count(
+               InsetCode code, ///< Code of inset type to count.
+               pos_type startpos = 0 ///< start position for the counting.
+               ) const;
 
 private:
        ///
-       List list;
+       List list_;
 };
 
+
+} // namespace lyx
+
 #endif