From 26e5398807b6edd6dd71046ef745f5c6acfab1ed Mon Sep 17 00:00:00 2001 From: Stan Seibert Date: Fri, 16 Sep 2011 20:09:49 -0400 Subject: Silence annoying GEANT4 warnings and banners during operation. --- src/mute.cc | 41 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 src/mute.cc (limited to 'src') diff --git a/src/mute.cc b/src/mute.cc new file mode 100644 index 0000000..e13814f --- /dev/null +++ b/src/mute.cc @@ -0,0 +1,41 @@ +#include + +class discard_streambuf : public std::streambuf { +public: + discard_streambuf() { }; + + virtual int_type overflow(int_type c) { + // Do nothing with this character + return c; + }; +}; + +discard_streambuf discard; +std::streambuf *g4cout_orig = G4cout.rdbuf(); +std::streambuf *g4cerr_orig = G4cerr.rdbuf(); + +void mute_g4mute() { + G4cout.rdbuf(&discard); + G4cerr.rdbuf(&discard); +} + +void mute_g4unmute() { + G4cout.rdbuf(g4cout_orig); + G4cerr.rdbuf(g4cerr_orig); +} + + +#include + +using namespace boost::python; + +void export_mute() +{ + def("g4mute", mute_g4mute, default_call_policies(), "Silence all GEANT4 output"); + def("g4unmute", mute_g4unmute, default_call_policies(), "Re-enable GEANT4 output after calling ``g4mute()``."); +} + +BOOST_PYTHON_MODULE(mute) +{ + export_mute(); +} -- cgit