Some small counters work

git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@4936 a592a061-630c-0410-9148-cb99ea01b6c8
This commit is contained in:
Lars Gullik Bjønnes 2002-08-11 20:34:20 +00:00
parent 6b224b1217
commit 83f4b0018e
7 changed files with 50 additions and 35 deletions

View File

@ -1,20 +1,33 @@
2002-08-11 Lars Gullik Bjønnes <larsbj@gullik.net>
* paragraph_pimpl.h: remove inclusion of boost/array.hpp, remove
unused class variable counter_,
* paragraph.[Ch] (getFirstCounter): delete unused function
* counters.C: include LAssert.h
(reset): add a new function with no arg, change other version to
not have def. arg and to not allow empty arg.
* text2.C (setCounter): remove empty arg from call to Counters::reset
2002-08-11 John Levon <levon@movementarian.org> 2002-08-11 John Levon <levon@movementarian.org>
* Makefile.am: add WordLangTuple.h * Makefile.am: add WordLangTuple.h
2002-08-11 Lars Gullik Bjønnes <larsbj@gullik.net> 2002-08-11 Lars Gullik Bjønnes <larsbj@gullik.net>
* paragraph.C, ToolbarDefaults.h, kbsequence.h, lyx_main.C, * paragraph.C, ToolbarDefaults.h, kbsequence.h, lyx_main.C,
lyxfunc.C lyxlex_pimpl.C: ws changes only. lyxfunc.C lyxlex_pimpl.C: ws changes only.
* insets/insettext.C: InsetList changes * insets/insettext.C: InsetList changes
* graphics/GraphicsSupport.C (operator()): InsetList changes * graphics/GraphicsSupport.C (operator()): InsetList changes
* toc.C (getTocList): InsetList changes * toc.C (getTocList): InsetList changes
* paragraph_pimpl.[Ch]: InsetList changes * paragraph_pimpl.[Ch]: InsetList changes
* paragraph.[Ch]: InsetList changes * paragraph.[Ch]: InsetList changes
* buffer.C (inset_iterator): InsetList changes * buffer.C (inset_iterator): InsetList changes

View File

@ -18,6 +18,7 @@
#include "counters.h" #include "counters.h"
#include "debug.h" #include "debug.h"
#include "support/lstrings.h" #include "support/lstrings.h"
#include "support/LAssert.h"
using std::endl; using std::endl;
using std::vector; using std::vector;
@ -198,12 +199,25 @@ void Counters::step(string const & ctr)
} }
} }
void Counters::reset(string const & match)
void Counters::reset()
{ {
CounterList::iterator it = counterList.begin(); CounterList::iterator it = counterList.begin();
CounterList::iterator end = counterList.end(); CounterList::iterator end = counterList.end();
for (; it != end; ++it) { for (; it != end; ++it) {
if (it->first.find(match) != string::npos || match == "") it->second.reset();
}
}
void Counters::reset(string const & match)
{
lyx::Assert(!match.empty());
CounterList::iterator it = counterList.begin();
CounterList::iterator end = counterList.end();
for (; it != end; ++it) {
if (it->first.find(match) != string::npos)
it->second.reset(); it->second.reset();
} }
} }

View File

@ -45,20 +45,20 @@ public:
private: private:
int value_; int value_;
/// contains master counter name; master counter is the counter /// contains master counter name; master counter is the counter
/// that, if stepped (incremented) zeroes this counter. E.g. /// that, if stepped (incremented) zeroes this counter. E.g.
/// "subparagraph"'s master is "paragraph". /// "subparagraph"'s master is "paragraph".
string master_; string master_;
}; };
/// This is a class of (La)TeX type counters. /// This is a class of (La)TeX type counters.
/// Every instantiation is an array of counters of type Counter. /// Every instantiation is an array of counters of type Counter.
class Counters { class Counters {
public: public:
/// ///
Counters(); Counters();
/// ///
//~Counters(); //~Counters();
/// Add a new counter to array. /// Add a new counter to array.
void newCounter(string const & newc); void newCounter(string const & newc);
@ -75,30 +75,31 @@ public:
/// NOTE sub-slaves not zeroed! That happens at slave's /// NOTE sub-slaves not zeroed! That happens at slave's
/// first step 0->1. Seems to be sufficient. /// first step 0->1. Seems to be sufficient.
void step(string const & ctr); void step(string const & ctr);
/// Reset counters matched by match string. Empty string matches /// Reset all counters.
/// all. void reset();
void reset(string const & match = string()); /// Reset counters matched by match string.
/// Copy counters whose name matches match from the &from to void reset(string const & match);
/// Copy counters whose name matches match from the &from to
/// the &to array of counters. Empty string matches all. /// the &to array of counters. Empty string matches all.
void copy(Counters & from, Counters & to, string const & match = string()); void copy(Counters & from, Counters & to, string const & match = string());
/// A numeric label's single item, like .1 for subsection number in /// A numeric label's single item, like .1 for subsection number in
/// the 2.1.4 subsubsection number label. "first" indicates if this /// the 2.1.4 subsubsection number label. "first" indicates if this
/// is the first item to be displayed, usually chapter or section. /// is the first item to be displayed, usually chapter or section.
string labelItem(string const & ctr, string labelItem(string const & ctr,
string const & labeltype, string const & labeltype,
string const & langtype = "latin", string const & langtype = "latin",
bool first = false); bool first = false);
/// A complete numeric label, like 2.1.4 for a subsubsection. /// A complete numeric label, like 2.1.4 for a subsubsection.
/// "head" indicates sequence number of first item to be /// "head" indicates sequence number of first item to be
/// displayed, e.g. 0 for chapter, 1 for section. /// displayed, e.g. 0 for chapter, 1 for section.
string numberLabel(string const & ctr, string numberLabel(string const & ctr,
string const & labeltype, string const & labeltype,
string const & langtype = "latin", string const & langtype = "latin",
int head = 0); int head = 0);
/// Maps numbers to enumeration of sectioning counter name strings. /// Maps numbers to enumeration of sectioning counter name strings.
std::vector<string> enums; std::vector<string> enums;
std::vector<string> sects; std::vector<string> sects;
private: private:
/// Maps counter (layout) names to actual counters. /// Maps counter (layout) names to actual counters.
typedef std::map<string, Counter> CounterList; typedef std::map<string, Counter> CounterList;

View File

@ -984,12 +984,6 @@ string const & Paragraph::getLabelstring() const
} }
int Paragraph::getFirstCounter(int i) const
{
return pimpl_->counter_[i];
}
// the next two functions are for the manual labels // the next two functions are for the manual labels
string const Paragraph::getLabelWidthString() const string const Paragraph::getLabelWidthString() const
{ {

View File

@ -222,8 +222,6 @@ public:
/// ///
void applyLayout(LyXLayout_ptr const & new_layout); void applyLayout(LyXLayout_ptr const & new_layout);
/// ///
int getFirstCounter(int i) const;
///
void erase(lyx::pos_type pos); void erase(lyx::pos_type pos);
/** the flag determines wether the layout should be copied /** the flag determines wether the layout should be copied
*/ */

View File

@ -20,8 +20,6 @@
#include "ParagraphParameters.h" #include "ParagraphParameters.h"
#include "counters.h" #include "counters.h"
#include <boost/array.hpp>
class LyXLayout; class LyXLayout;
struct Paragraph::Pimpl { struct Paragraph::Pimpl {
@ -59,9 +57,7 @@ struct Paragraph::Pimpl {
BufferParams const & bparams) const; BufferParams const & bparams) const;
/// ///
Inset * inset_owner; Inset * inset_owner;
///
boost::array<int, 10> counter_;
/** A font entry covers a range of positions. Notice that the /** A font entry covers a range of positions. Notice that the
entries in the list are inserted in random order. entries in the list are inserted in random order.
I don't think it's worth the effort to implement a more effective I don't think it's worth the effort to implement a more effective
@ -151,7 +147,6 @@ struct Paragraph::Pimpl {
ParagraphParameters params; ParagraphParameters params;
/// ///
Counters ctrs; Counters ctrs;
private: private:
/// match a string against a particular point in the paragraph /// match a string against a particular point in the paragraph
bool isTextAt(string const & str, lyx::pos_type pos) const; bool isTextAt(string const & str, lyx::pos_type pos) const;

View File

@ -1227,12 +1227,12 @@ void LyXText::setCounter(Buffer const * buf, Paragraph * par) const
par->params().appendix(par->previous()->params().appendix()); par->params().appendix(par->previous()->params().appendix());
if (!par->params().appendix() && par->params().startOfAppendix()) { if (!par->params().appendix() && par->params().startOfAppendix()) {
par->params().appendix(true); par->params().appendix(true);
par->counters().reset(""); par->counters().reset();
} }
par->enumdepth = par->previous()->enumdepth; par->enumdepth = par->previous()->enumdepth;
par->itemdepth = par->previous()->itemdepth; par->itemdepth = par->previous()->itemdepth;
} else { } else {
par->counters().reset(""); par->counters().reset();
par->params().appendix(par->params().startOfAppendix()); par->params().appendix(par->params().startOfAppendix());
par->enumdepth = 0; par->enumdepth = 0;
par->itemdepth = 0; par->itemdepth = 0;