* This file is part of LyX, the document processor.
* Licence details can be found in the file COPYING.
*
- * \author Lars Gullik Bjønnes
+ * \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 &);
+
+ ///
+ class InsetTable {
+ public:
///
- lyx::pos_type pos;
+ InsetTable(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;
///
~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 occurences of 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