# # patch "ChangeLog" # from [045a2f32f1c9544b7087f96aa36776c42f57a845] # to [93a182ab4aba78214a6f7be27737818932975cc3] # # patch "sanity.cc" # from [7b3c21bc6bcc1b0b365d7ba19a1c06377a7b3cbe] # to [d43cf000a18c156b97527e0724635b050159d16d] # # patch "sanity.hh" # from [f9cefbfdafc2280724a4214c250108851a56d34d] # to [b9d4b15314f8ce56faec5889cfdf90f6b6de2a05] # ======================================================================== --- ChangeLog 045a2f32f1c9544b7087f96aa36776c42f57a845 +++ ChangeLog 93a182ab4aba78214a6f7be27737818932975cc3 @@ -1,3 +1,8 @@ +2005-09-03 Benoît Dejean + + * sanity.{cc,hh}: boost::format vs. F(). Merged boost::format + and moved non-template code to sanity.cc. + 2005-09-05 Matthew Gregan * paths.cc (find_and_go_to_working_copy): Create root and bookdir ======================================================================== --- sanity.cc 7b3c21bc6bcc1b0b365d7ba19a1c06377a7b3cbe +++ sanity.cc d43cf000a18c156b97527e0724635b050159d16d @@ -287,3 +287,14 @@ out = obj; } + +void MusingBase::gasp(const std::string & objstr, std::string & out) const +{ + out = (boost::format("----- begin '%s' (in %s, at %s:%d)\n" + "%s" + "----- end '%s' (in %s, at %s:%d)\n") + % name % func % file % line + % objstr + % name % func % file % line + ).str(); +} ======================================================================== --- sanity.hh f9cefbfdafc2280724a4214c250108851a56d34d +++ sanity.hh b9d4b15314f8ce56faec5889cfdf90f6b6de2a05 @@ -220,29 +220,41 @@ virtual void gasp(std::string & out) const = 0; }; + +class MusingBase +{ + char const * name; + char const * file; + char const * func; + int line; + +protected: + MusingBase(char const * name, char const * file, int line, char const * func) + : name(name), file(file), func(func), line(line) {} + + void gasp(const std::string & objstr, std::string & out) const; +}; + + template -class Musing : public MusingI +class Musing : public MusingI, private MusingBase { public: Musing(T const & obj, char const * name, char const * file, int line, char const * func) - : obj(obj), name(name), file(file), line(line), func(func) {} + : MusingBase(name, file, line, func), obj(obj) {} virtual void gasp(std::string & out) const; private: T const & obj; - char const * name; - char const * file; - int line; - char const * func; }; + template void Musing::gasp(std::string & out) const { - out = (F("----- begin '%s' (in %s, at %s:%d)\n") % name % func % file % line).str(); std::string tmp; dump(obj, tmp); - out += tmp; - out += (F("----- end '%s' (in %s, at %s:%d)\n") % name % func % file % line).str(); + + MusingBase::gasp(tmp, out); } // Yes, this is insane. No, it doesn't work if you do something more sane.