]> git.lyx.org Git - lyx.git/blobdiff - src/Counters.cpp
Provide proper fallback if a bibliography processor is not found
[lyx.git] / src / Counters.cpp
index 79fe76fea9afa0d3d588c3858296643f19f300c6..2daac53224dca0a4f26e6850d3b7d7a228e6c1be 100644 (file)
@@ -265,6 +265,31 @@ int Counters::value(docstring const & ctr) const
 }
 
 
+void Counters::resetSlaves(docstring const & ctr)
+{
+       CounterList::iterator it = counterList_.begin();
+       CounterList::iterator const end = counterList_.end();
+       for (; it != end; ++it) {
+               if (it->second.master() == ctr) {
+                       it->second.reset();
+                       resetSlaves(it->first);
+               }
+       }
+}
+
+
+void Counters::stepMaster(docstring const & ctr, UpdateType utype)
+{
+       CounterList::iterator it = counterList_.find(ctr);
+       if (it == counterList_.end()) {
+               lyxerr << "step: Counter does not exist: "
+                      << to_utf8(ctr) << endl;
+               return;
+       }
+       step(it->second.master(), utype);
+}
+
+
 void Counters::step(docstring const & ctr, UpdateType utype)
 {
        CounterList::iterator it = counterList_.find(ctr);
@@ -280,13 +305,8 @@ void Counters::step(docstring const & ctr, UpdateType utype)
                counter_stack_.pop_back();
                counter_stack_.push_back(ctr);
        }
-       it = counterList_.begin();
-       CounterList::iterator const end = counterList_.end();
-       for (; it != end; ++it) {
-               if (it->second.master() == ctr) {
-                       it->second.reset();
-               }
-       }
+
+       resetSlaves(ctr);
 }
 
 
@@ -400,7 +420,7 @@ docstring const romanCounter(int const n)
                "DC", "DCC", "DCCC", "CM"
        };
 
-       if (n > 1000 || n < 1)
+       if (n >= 1000 || n < 1)
                return from_ascii("??");
 
        int val = n;
@@ -462,7 +482,7 @@ docstring const fnsymbolCounter(int const n)
        };
 }
 
-} // namespace anon
+} // namespace
 
 
 docstring Counters::labelItem(docstring const & ctr,
@@ -525,8 +545,6 @@ docstring Counters::flattenLabelString(docstring const & counter,
                                       string const & lang,
                                       vector<docstring> & callers) const
 {
-       docstring label;
-
        if (find(callers.begin(), callers.end(), counter) != callers.end()) {
                // recursion detected
                lyxerr << "Warning: Recursion in label for counter `"