diff --git a/src/ChangeLog b/src/ChangeLog index 1ac54b1062..18ecd46b8a 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,8 @@ + +2003-05-09 André Pönitz + + * LColor.[Ch]: Pimpl the #include away + 2003-05-09 John Levon * bufferlist.C: never remove emergency saves diff --git a/src/LColor.C b/src/LColor.C index 698b565323..aa81477110 100644 --- a/src/LColor.C +++ b/src/LColor.C @@ -15,19 +15,12 @@ #include "gettext.h" #include "support/lstrings.h" +#include + using std::endl; -void LColor::fill(LColor::color col, string const & gui, - string const & latex, string const & x11, - string const & lyx) { - information in; - in.guiname = gui; - in.latexname = latex; - in.x11name = x11; - in.lyxname = lyx; - infotab[col] = in; -} +namespace { struct ColorEntry { LColor::color lcolor; @@ -37,11 +30,44 @@ struct ColorEntry { char const * lyxname; }; +} + + +struct LColor::Pimpl { + /// + struct information { + /// the name as it appears in the GUI + string guiname; + /// the name used in LaTeX + string latexname; + /// the name for X11 + string x11name; + /// the name for LyX + string lyxname; + }; + + /// initialise a color entry + void fill(ColorEntry const & entry) + { + information & in = infotab[entry.lcolor]; + in.guiname = entry.guiname; + in.latexname = entry.latexname; + in.x11name = entry.x11name; + in.lyxname = entry.lyxname; + } + + /// + typedef std::map InfoTab; + /// the table of color information + InfoTab infotab; +}; + LColor::LColor() + : pimpl_(new Pimpl) { // LColor::color, gui, latex, x11, lyx - ColorEntry items[] = { + static ColorEntry const items[] = { { none, N_("none"), "none", "black", "none" }, { black, N_("black"), "black", "black", "black" }, { white, N_("white"), "white", "white", "white" }, @@ -100,29 +126,43 @@ LColor::LColor() { ignore, 0, 0, 0, 0 } }; - int i = 0; - while (items[i].guiname) { - fill(items[i].lcolor, items[i].guiname, items[i].latexname, - items[i].x11name, items[i].lyxname); - ++i; - } + for (int i = 0; items[i].guiname; ++i) + pimpl_->fill(items[i]); } +LColor::LColor(LColor const & c) + : pimpl_(new Pimpl(*c.pimpl_)) +{} + + +LColor::~LColor() +{ + delete pimpl_; +} + + +void LColor::operator=(LColor const & c) +{ + LColor tmp(c); + std::swap(pimpl_, tmp.pimpl_); +} + + + string const LColor::getGUIName(LColor::color c) const { - InfoTab::const_iterator ici = infotab.find(c); - if (ici != infotab.end()) + Pimpl::InfoTab::const_iterator ici = pimpl_->infotab.find(c); + if (ici != pimpl_->infotab.end()) return _(ici->second.guiname); - return "none"; } string const LColor::getX11Name(LColor::color c) const { - InfoTab::const_iterator ici = infotab.find(c); - if (ici != infotab.end()) + Pimpl::InfoTab::const_iterator ici = pimpl_->infotab.find(c); + if (ici != pimpl_->infotab.end()) return ici->second.x11name; lyxerr << "LyX internal error: Missing color" @@ -134,8 +174,8 @@ string const LColor::getX11Name(LColor::color c) const string const LColor::getLaTeXName(LColor::color c) const { - InfoTab::const_iterator ici = infotab.find(c); - if (ici != infotab.end()) + Pimpl::InfoTab::const_iterator ici = pimpl_->infotab.find(c); + if (ici != pimpl_->infotab.end()) return ici->second.latexname; return "black"; } @@ -143,8 +183,8 @@ string const LColor::getLaTeXName(LColor::color c) const string const LColor::getLyXName(LColor::color c) const { - InfoTab::const_iterator ici = infotab.find(c); - if (ici != infotab.end()) + Pimpl::InfoTab::const_iterator ici = pimpl_->infotab.find(c); + if (ici != pimpl_->infotab.end()) return ici->second.lyxname; return "black"; } @@ -152,8 +192,8 @@ string const LColor::getLyXName(LColor::color c) const void LColor::setColor(LColor::color col, string const & x11name) { - InfoTab::iterator iti = infotab.find(col); - if (iti != infotab.end()) { + Pimpl::InfoTab::iterator iti = pimpl_->infotab.find(col); + if (iti != pimpl_->infotab.end()) { iti->second.x11name = x11name; return; } @@ -164,7 +204,7 @@ void LColor::setColor(LColor::color col, string const & x11name) bool LColor::setColor(string const & lyxname, string const & x11name) { - color col = getFromLyXName (lyxname); + color col = getFromLyXName(lyxname); // "inherit" is returned for colors not in the database // (and anyway should not be redefined) @@ -180,8 +220,8 @@ bool LColor::setColor(string const & lyxname, string const & x11name) LColor::color LColor::getFromGUIName(string const & guiname) const { - InfoTab::const_iterator ici = infotab.begin(); - InfoTab::const_iterator end = infotab.end(); + Pimpl::InfoTab::const_iterator ici = pimpl_->infotab.begin(); + Pimpl::InfoTab::const_iterator end = pimpl_->infotab.end(); for (; ici != end; ++ici) { if (!compare_ascii_no_case(_(ici->second.guiname), guiname)) return ici->first; @@ -192,9 +232,8 @@ LColor::color LColor::getFromGUIName(string const & guiname) const LColor::color LColor::getFromLyXName(string const & lyxname) const { - - InfoTab::const_iterator ici = infotab.begin(); - InfoTab::const_iterator end = infotab.end(); + Pimpl::InfoTab::const_iterator ici = pimpl_->infotab.begin(); + Pimpl::InfoTab::const_iterator end = pimpl_->infotab.end(); for (; ici != end; ++ici) { if (!compare_ascii_no_case(ici->second.lyxname, lyxname)) return ici->first; @@ -202,6 +241,7 @@ LColor::color LColor::getFromLyXName(string const & lyxname) const return LColor::inherit; } + // The evil global LColor instance LColor lcolor; // An equally evil global system LColor instance diff --git a/src/LColor.h b/src/LColor.h index 98aadd8f1c..43405264c9 100644 --- a/src/LColor.h +++ b/src/LColor.h @@ -11,8 +11,6 @@ #ifndef LCOLOR_H #define LCOLOR_H -#include - #include "LString.h" /** @@ -35,7 +33,7 @@ * - A logical color, such as no color, inherit, math */ -class LColor // : public boost::noncopyable { +class LColor // made copyable for same reasons as LyXRC was made copyable. See there for // explanation. { @@ -170,6 +168,12 @@ public: /// LColor(); + /// + LColor(LColor const &); + /// + ~LColor(); + /// + void operator=(LColor const &); /// set the given LyX color to the color defined by the X11 name given void setColor(LColor::color col, string const & x11name); /// set the given LyX color to the color defined by the X11 name given @@ -193,26 +197,9 @@ public: LColor::color getFromLyXName(string const & lyxname) const; private: /// - struct information { - /// the name as it appears in the GUI - string guiname; - /// the name used in LaTeX - string latexname; - /// the name for X11 - string x11name; - /// the name for LyX - string lyxname; - }; - - /// initialise a color entry - void fill(LColor::color col, string const & gui, - string const & latex, string const & x11, - string const & lyx); - + struct Pimpl; /// - typedef std::map InfoTab; - /// the table of color information - InfoTab infotab; + Pimpl * pimpl_; }; /// the current color definitions diff --git a/src/frontends/xforms/ColorHandler.h b/src/frontends/xforms/ColorHandler.h index ed7ae36732..a402f22f3e 100644 --- a/src/frontends/xforms/ColorHandler.h +++ b/src/frontends/xforms/ColorHandler.h @@ -15,6 +15,7 @@ #include "frontends/Painter.h" +#include #include // This is only included to provide stuff for the non-public sections diff --git a/src/insets/ChangeLog b/src/insets/ChangeLog index 6c0e7d73bf..53af3d0670 100644 --- a/src/insets/ChangeLog +++ b/src/insets/ChangeLog @@ -1,3 +1,8 @@ + +2003-05-05 André Pönitz + + * insettext.h: add missing #include + 2003-05-07 Lars Gullik Bjřnnes * insettext.C (InsetText): parlist cleanup diff --git a/src/insets/insettext.h b/src/insets/insettext.h index 7521131001..f8b1161bd1 100644 --- a/src/insets/insettext.h +++ b/src/insets/insettext.h @@ -22,6 +22,7 @@ #include "support/types.h" #include +#include class Painter; class BufferView;