Gnash 0.8.10dev
Classes | Namespaces | Defines | Functions
log.h File Reference
#include "rc.h"
#include "dsodefs.h"
#include <fstream>
#include <boost/thread/mutex.hpp>
#include <boost/format.hpp>
#include "gettext.h"
#include <boost/preprocessor/arithmetic/inc.hpp>
#include <boost/preprocessor/repetition/enum_params.hpp>
#include <boost/preprocessor/repetition/repeat.hpp>
#include <boost/preprocessor/repetition/repeat_from_to.hpp>
#include <boost/preprocessor/seq/for_each.hpp>

Go to the source code of this file.

Classes

class  gnash::LogFile
class  gnash::HostFunctionReport

Namespaces

namespace  gnash
 

Anonymous namespace for callbacks, local functions, event handlers etc.


Defines

#define DEFAULT_LOGFILE   "gnash-dbg.log"
#define _(String)   gettext (String)
#define N_(String)   gettext_noop (String)
#define LOG_ONCE(x)
#define __FUNCDNAME__   __FUNCTION__
#define TOKENIZE_FORMAT(z, n, t)   % t##n
#define TOKENIZE_ARGS(z, n, t)   BOOST_PP_COMMA_IF(n) const T##n& t##n
#define LOG_TYPES
#define LOG_TEMPLATES(z, n, data)
#define ARG_NUMBER   10
 Defines the maximum number of template arguments.
#define GENERATE_LOG_TYPES(r, _, t)   BOOST_PP_REPEAT(ARG_NUMBER, LOG_TEMPLATES, t)
#define VERBOSE_PARSE   1
#define VERBOSE_ACTION   1
#define VERBOSE_ASCODING_ERRORS   1
#define VERBOSE_MALFORMED_SWF   1
#define VERBOSE_NETWORKING   1
#define IF_VERBOSE_PARSE(x)   do { if ( LogFile::getDefaultInstance().getParserDump() ) { x; } } while (0);
#define IF_VERBOSE_ACTION(x)   do { if ( LogFile::getDefaultInstance().getActionDump() ) { x; } } while (0);
#define IF_VERBOSE_NETWORK(x)   do { if ( LogFile::getDefaultInstance().getNetwork() ) { x; } } while (0);
#define IF_VERBOSE_ASCODING_ERRORS(x)   { if ( gnash::RcInitFile::getDefaultInstance().showASCodingErrors() ) { x; } }
#define IF_VERBOSE_MALFORMED_SWF(x)   { if ( gnash::RcInitFile::getDefaultInstance().showMalformedSWFErrors() ) { x; } }
#define dummystr(x)   # x
#define dummyestr(x)   dummystr(x)
#define __FUNCTION__   __FILE__":"dummyestr(__LINE__)
#define __PRETTY_FUNCTION__   __FUNCTION__
#define GNASH_REPORT_FUNCTION   gnash::log_debug("entering")
#define GNASH_REPORT_RETURN   gnash::log_debug("returning")

Functions

void gnash::processLog_network (const boost::format &fmt)
void gnash::processLog_error (const boost::format &fmt)
void gnash::processLog_unimpl (const boost::format &fmt)
void gnash::processLog_trace (const boost::format &fmt)
void gnash::processLog_debug (const boost::format &fmt)
void gnash::processLog_action (const boost::format &fmt)
void gnash::processLog_parse (const boost::format &fmt)
void gnash::processLog_security (const boost::format &fmt)
void gnash::processLog_swferror (const boost::format &fmt)
void gnash::processLog_aserror (const boost::format &fmt)
void gnash::processLog_abc (const boost::format &fmt)
std::string gnash::hexify (const unsigned char *bytes, size_t length, bool ascii)
 Convert a sequence of bytes to hex or ascii format.

Define Documentation

#define _ (   String)    gettext (String)

Referenced by gnash::MovieClip::add_display_object(), gnash::sprite_definition::add_font(), gnash::SWFMovieDefinition::add_sound_sample(), gnash::sprite_definition::addBitmap(), gnash::GC::addCollectable(), gnash::movie_root::addExternalCallback(), gnash::Font::addFontNameInfo(), gnash::ActionExec::adjustNextPC(), gnash::MovieClip::advance(), gnash::movie_root::advance(), gnash::Gui::advanceMovie(), gnash::URLAccessManager::allow(), gnash::Renderer_cairo::apply_line_style(), gnash::TouchDevice::apply_ts_calibration(), gnash::media::ffmpeg::AudioDecoderFfmpeg::AudioDecoderFfmpeg(), gnash::media::gst::AudioDecoderGst::AudioDecoderGst(), gnash::media::AudioDecoderSimple::AudioDecoderSimple(), gnash::media::AudioDecoderSpeex::AudioDecoderSpeex(), gnash::sound::AOS4_sound_handler::audioTask(), gnash::GtkAggVaapiGlue::beforeRendering(), gnash::DisplayObject::blendMode(), gnash::SWF::ButtonAction::ButtonAction(), gnash::MovieClip::call_frame_actions(), gnash::movie_root::callExternalCallback(), gnash::movie_root::callExternalJavascript(), gnash::MouseDevice::check(), gnash::media::gst::GstUtil::check_missing_plugins(), gnash::SWFStream::close_tag(), gnash::MouseDevice::command(), gnash::SWFMovieDefinition::completeLoad(), gnash::NetConnection_as::connect(), gnash::Socket::connected(), gnash::MovieClip::construct(), gnash::MovieClip::constructAsScriptObject(), gnash::media::gst::VideoConverterGst::convert(), gnash::create_Renderer_agg(), gnash::media::haiku::MediaHandlerHaiku::createAudioDecoder(), gnash::media::gst::MediaHandlerGst::createAudioDecoder(), gnash::media::ffmpeg::MediaHandlerFfmpeg::createAudioDecoder(), gnash::GtkGui::createControlMenu(), gnash::GtkGui::createEditMenu(), gnash::GtkGui::createFileMenu(), gnash::media::MediaHandler::createFlashAudioDecoder(), gnash::GtkGui::createHelpMenu(), gnash::media::MediaHandler::createMediaParser(), gnash::GtkGui::createMenu(), gnash::GtkGui::createQualityMenu(), gnash::SdlAggGlue::createRenderHandler(), gnash::Qt4AggGlue::createRenderHandler(), gnash::KdeAggGlue::createRenderHandler(), gnash::HaikuAggGlue::createRenderHandler(), gnash::GtkAggGlue::createRenderHandler(), gnash::FltkAggGlue::createRenderHandler(), gnash::AOS4CairoGlue::createRenderHandler(), gnash::AOS4AggGlue::createRenderHandler(), gnash::media::gst::MediaHandlerGst::createVideoDecoder(), gnash::GtkGui::createViewMenu(), gnash::Qt4Gui::createWindow(), gnash::media::AudioDecoderSpeex::decode(), gnash::media::AudioDecoderSimple::decode(), gnash::media::gst::AudioDecoderGst::decode(), gnash::media::ffmpeg::AudioDecoderFfmpeg::decode(), gnash::SWF::define_sound_loader(), gnash::BitmapData_as::draw(), gnash::Renderer_cairo::drawVideoFrame(), gnash::movie_root::dropLevel(), dump_ctrl(), gnash::as_object::dump_members(), dump_shm(), gnash::MovieClip::duplicateMovieClip(), gnash::abc::Machine::execute(), gnash::SWF::SWFHandlers::execute(), gnash::SWF::file_attributes_loader(), gnash::filereferencelist_ctor(), gnash::abc::Trait::finalize(), gnash::abc::Trait::finalize_mbody(), gnash::findObject(), gnash::image::JpegInput::finishImage(), gnash::SWF::frame_label_loader(), gnash::GC::fuzzyCollect(), gnash::GC::GC(), gnash::media::gst::GstUtil::get_audiosink_element(), gnash::as_object::get_member(), gnash::CharacterDictionary::getDisplayObject(), gnash::SharedLib::getDllSymbol(), gnash::SharedLib::getInitEntry(), gnash::SharedObjectLibrary::getLocal(), gnash::StreamProvider::getStream(), gnash::clocktime::getTimeZoneOffset(), gnash::movie_root::getURL(), gnash::MovieClip::goto_frame(), gnash::MovieClip::goto_labeled_frame(), gnash::Gui::hideMenu(), gnash::SWFMovieDefinition::importResources(), gnash::movie_definition::importResources(), gnash::media::gst::VideoConverterGst::init(), gnash::Qt4Gui::init(), gnash::MouseDevice::init(), gnash::HaikuGui::init(), gnash::GtkGlExtGlue::init(), gnash::GtkAggVaapiGlue::init(), gnash::GtkGui::init(), gnash::FBGui::init(), gnash::EventDevice::init(), gnash::DumpGui::init(), gnash::AOS4Gui::init(), gnash::as_object::init_member(), gnash::Extension::initModule(), gnash::Extension::initModuleWithFunc(), gnash::XMLNode_as::insertBefore(), gnash::media::MediaHandler::isFLV(), gnash::SWF::jpeg_tables_loader(), gnash::key_is_down(), gnash::movie_root::keyEvent(), gnash::SWF::VideoFrameTag::loader(), gnash::SWF::StreamSoundBlockTag::loader(), gnash::SWF::StartSound2Tag::loader(), gnash::SWF::StartSoundTag::loader(), gnash::SWF::SoundStreamHeadTag::loader(), gnash::SWF::RemoveObjectTag::loader(), gnash::SWF::DoInitActionTag::loader(), gnash::SWF::DoActionTag::loader(), gnash::SWF::DoABCTag::loader(), gnash::SWF::DefineText2Tag::loader(), gnash::SWF::DefineTextTag::loader(), gnash::SWF::DefineShapeTag::loader(), gnash::SWF::DefineFontInfoTag::loader(), gnash::SWF::DefineFontNameTag::loader(), gnash::SWF::DefineFontAlignZonesTag::loader(), gnash::SWF::DefineButton2Tag::loader(), gnash::SWF::DefineButtonTag::loader(), gnash::SWF::DefineButtonSoundTag::loader(), gnash::SWF::DefineButtonCxformTag::loader(), gnash::SWF::DefineBitsTag::loader(), gnash::SWF::CSMTextSettingsTag::loader(), gnash::RcInitFile::loadFiles(), gnash::MovieClip::loadVariables(), main(), gnash::MovieFactory::makeMovie(), gnash::NetworkAdapter::makeStream(), gnash::GcResource::markReachableResources(), gnash::media::gst::MediaParserGst::MediaParserGst(), gnash::SWF::metadata_loader(), gnash::Button::mouseEvent(), gnash::DisplayList::moveDisplayObject(), gnash::newAdd(), gnash::MovieClip::notifyEvent(), gnash::Gui::notifyMouseMove(), gnash::SWFStream::open_tag(), gnash::SharedLib::openLib(), gnash::ActionExec::operator()(), gnash::action_buffer::operator[](), gnash::RcInitFile::parseFile(), gnash::XML_as::parseXML(), gnash::sound::Mkit_sound_handler::pause(), gnash::sound::AOS4_sound_handler::pause(), gnash::NetStream_as::play(), gnash::MovieClip::pointInVisibleShape(), gnash::SdlAggGlue::prepDrawingArea(), gnash::HaikuAggGlue::prepDrawingArea(), gnash::AOS4CairoGlue::prepDrawingArea(), gnash::AOS4AggGlue::prepDrawingArea(), gnash::action_buffer::process_decl_dict(), gnash::movie_root::processInvoke(), gnash::as_object::prototypeOf(), gnash::media::gst::VideoDecoderGst::push(), gnash::VM::pushCallFrame(), gnash::qwidget::qwidget(), gnash::SWF::TextRecord::read(), gnash::SWFParser::read(), gnash::SWF::ShapeRecord::read(), gnash::image::JpegInput::read(), gnash::filter_factory::read(), gnash::SWF::ButtonRecord::read(), gnash::action_buffer::read(), gnash::abc::Trait::read(), gnash::SWFMovieDefinition::read_all_swf(), gnash::SWFStream::read_d64(), gnash::action_buffer::read_int16(), gnash::action_buffer::read_int32(), gnash::SWFStream::read_long_float(), gnash::action_buffer::read_string(), gnash::SWFStream::read_u16(), gnash::SWFStream::read_u32(), gnash::SWF::DefineFontTag::readCodeTable(), gnash::readFills(), gnash::SWFMovieDefinition::readHeader(), gnash::image::JpegInput::readHeader(), gnash::SWF::reflex_loader(), gnash::MovieClip::removeMovieClip(), gnash::TextField::removeTextField(), gnash::GtkAggVaapiGlue::render(), gnash::Renderer::renderToImage(), gnash::MovieClip::replace_display_object(), gnash::Gui::resizeWindow(), gnash::GtkGui::resizeWindow(), gnash::Player::run(), gnash::AOS4Gui::run(), gnash::GC::runCycle(), gnash::Extension::scanAndLoad(), gnash::Extension::scanDir(), gnash::SWFStream::seek(), gnash::media::ffmpeg::MediaParserFfmpeg::seek(), gnash::SWFMovieDefinition::set_jpeg_loader(), gnash::as_object::set_member(), gnash::Gui::setClipboard(), gnash::Font::setCodeTable(), gnash::Gui::setFullscreen(), gnash::setHeight(), gnash::setIndexedProperty(), gnash::CallFrame::setLocalRegister(), gnash::GcResource::setReachable(), gnash::VM::setRegister(), gnash::movie_root::setScriptLimits(), gnash::MovieClip::setStreamSoundId(), gnash::setVariable(), gnash::SharedLib::SharedLib(), gnash::GtkGui::showAboutDialog(), gnash::Gui::showMenu(), gnash::FBGui::showMenu(), gnash::Gui::showMouse(), gnash::FBGui::showMouse(), gnash::GtkGui::showPropertiesDialog(), gnash::ActionExec::skip_actions(), gnash::SWF::sprite_loader(), gnash::movie_root::swapLevels(), gnash::as_value::to_number(), gnash::MovieClip::unloadChildren(), gnash::sound::Mkit_sound_handler::unpause(), gnash::sound::AOS4_sound_handler::unpause(), gnash::Gui::unsetFullscreen(), gnash::RcInitFile::updateFile(), gnash::NetConnection_as::validateURL(), gnash::Video::Video(), gnash::media::ffmpeg::VideoConverterFfmpeg::VideoConverterFfmpeg(), gnash::media::gst::VideoConverterGst::VideoConverterGst(), gnash::media::ffmpeg::VideoDecoderFfmpeg::VideoDecoderFfmpeg(), gnash::media::gst::VideoDecoderGst::VideoDecoderGst(), gnash::sound::WAVWriter::WAVWriter(), gnash::as_value::writeAMF0(), gnash::image::Output::writeImageRGBA(), gnash::amf::Writer::writeNull(), gnash::amf::Writer::writeObject(), gnash::amf::Writer::writeUndefined(), gnash::FBGui::~FBGui(), and gnash::GC::~GC().

#define __FUNCDNAME__   __FUNCTION__
#define __FUNCTION__   __FILE__":"dummyestr(__LINE__)
#define __PRETTY_FUNCTION__   __FUNCTION__
#define ARG_NUMBER   10

Defines the maximum number of template arguments.

The preprocessor generates templates with 1..ARG_NUMBER arguments.

#define DEFAULT_LOGFILE   "gnash-dbg.log"
#define dummyestr (   x)    dummystr(x)
#define dummystr (   x)    # x
#define GENERATE_LOG_TYPES (   r,
  _,
 
)    BOOST_PP_REPEAT(ARG_NUMBER, LOG_TEMPLATES, t)

Calls the macro LOG_TEMPLATES an ARG_NUMBER number of times, each time adding an extra typename argument to the template.

#define GNASH_REPORT_FUNCTION   gnash::log_debug("entering")

Referenced by gnash::TouchDevice::check(), gnash::MouseDevice::check(), gnash::EventDevice::check(), gnash::MouseDevice::command(), gnash::HaikuGui::createMenu(), gnash::HaikuGui::createMenuBar(), gnash::HaikuGui::createWindow(), gnash::dbus_ext_setsockname(), gnash::Extension::dumpModules(), gnash::VaapiGlobalContext::get(), gnash::SharedLib::getDllSymbol(), gnash::GtkCairoGlue::GtkCairoGlue(), gnash::gtkext_signal_connect_swapped(), gnash::GtkGlExtGlue::GtkGlExtGlue(), gnash::TouchDevice::init(), gnash::MouseDevice::init(), gnash::InputDevice::init(), gnash::HaikuGui::init(), gnash::EventDevice::init(), gnash::VaapiContext::initDecoder(), gnash::Extension::initModuleWithFunc(), gnash::lirc_ext_getkey(), gnash::lirc_ext_init(), gnash::MouseDevice::MouseDevice(), gnash::AquaOglGlue::prepDrawingArea(), gnash::movie_root::processInvoke(), gnash::InputDevice::readData(), gnash::AquaOglGlue::render(), gnash::FltkCairoGlue::resize(), gnash::FltkAggGlue::resize(), gnash::AOS4CairoGlue::resize(), gnash::HaikuGui::run(), gnash::AOS4Gui::run(), gnash::Extension::scanDir(), gnash::NetStream_as::seek(), gnash::HaikuGui::setupEvents(), gnash::TouchDevice::TouchDevice(), gnash::VaapiContext::VaapiContext(), gnash::VaapiDisplay::VaapiDisplay(), gnash::VaapiGlobalContext::VaapiGlobalContext(), gnash::GtkExt::window_new(), gnash::HaikuGui::~HaikuGui(), gnash::VaapiContext::~VaapiContext(), gnash::VaapiDisplay::~VaapiDisplay(), gnash::VaapiImage::~VaapiImage(), and gnash::VaapiSubpicture::~VaapiSubpicture().

#define GNASH_REPORT_RETURN   gnash::log_debug("returning")
#define IF_VERBOSE_ACTION (   x)    do { if ( LogFile::getDefaultInstance().getActionDump() ) { x; } } while (0);
#define IF_VERBOSE_ASCODING_ERRORS (   x)    { if ( gnash::RcInitFile::getDefaultInstance().showASCodingErrors() ) { x; } }
#define IF_VERBOSE_MALFORMED_SWF (   x)    { if ( gnash::RcInitFile::getDefaultInstance().showMalformedSWFErrors() ) { x; } }

Referenced by gnash::MovieClip::add_display_object(), gnash::sprite_definition::add_font(), gnash::sprite_definition::addBitmap(), gnash::Font::addFontNameInfo(), gnash::SWFMovie::advance(), gnash::MovieClip::advance(), gnash::SWF::ButtonAction::ButtonAction(), gnash::SWFMovie::construct(), gnash::SWF::define_sound_loader(), gnash::SWF::TextRecord::displayRecords(), gnash::SWF::frame_label_loader(), gnash::MovieClip::goto_labeled_frame(), gnash::movie_definition::importResources(), gnash::SWFMovie::initializeCharacter(), gnash::SWF::jpeg_tables_loader(), gnash::SWF::VideoFrameTag::loader(), gnash::SWF::SymbolClassTag::loader(), gnash::SWF::StreamSoundBlockTag::loader(), gnash::SWF::StartSoundTag::loader(), gnash::SWF::SoundStreamHeadTag::loader(), gnash::SWF::DoInitActionTag::loader(), gnash::SWF::DoActionTag::loader(), gnash::SWF::DoABCTag::loader(), gnash::SWF::DefineSceneAndFrameLabelDataTag::loader(), gnash::SWF::DefineFontInfoTag::loader(), gnash::SWF::DefineFontNameTag::loader(), gnash::SWF::DefineFontAlignZonesTag::loader(), gnash::SWF::DefineButtonSoundTag::loader(), gnash::SWF::DefineButtonCxformTag::loader(), gnash::SWF::DefineBitsTag::loader(), gnash::DisplayList::moveDisplayObject(), gnash::ActionExec::operator()(), gnash::SWF::ShapeRecord::read(), gnash::filter_factory::read(), gnash::SWF::ButtonRecord::read(), gnash::action_buffer::read(), gnash::SWFMovieDefinition::read_all_swf(), gnash::readFills(), gnash::SWFMovieDefinition::readHeader(), gnash::readRect(), gnash::Font::setCodeTable(), gnash::ActionExec::skip_actions(), and gnash::SWF::sprite_loader().

#define IF_VERBOSE_NETWORK (   x)    do { if ( LogFile::getDefaultInstance().getNetwork() ) { x; } } while (0);
#define IF_VERBOSE_PARSE (   x)    do { if ( LogFile::getDefaultInstance().getParserDump() ) { x; } } while (0);

Referenced by gnash::SWFMovieDefinition::add_sound_sample(), gnash::SWF::ButtonAction::ButtonAction(), gnash::SWF::define_sound_loader(), gnash::SWF::file_attributes_loader(), gnash::CharacterDictionary::getDisplayObject(), gnash::SWF::jpeg_tables_loader(), gnash::SWF::SymbolClassTag::loader(), gnash::SWF::StartSound2Tag::loader(), gnash::SWF::StartSoundTag::loader(), gnash::SWF::SoundStreamHeadTag::loader(), gnash::SWF::SetTabIndexTag::loader(), gnash::SWF::RemoveObjectTag::loader(), gnash::SWF::DoInitActionTag::loader(), gnash::SWF::DoActionTag::loader(), gnash::SWF::DoABCTag::loader(), gnash::SWF::DefineText2Tag::loader(), gnash::SWF::DefineTextTag::loader(), gnash::SWF::DefineShapeTag::loader(), gnash::SWF::DefineScalingGridTag::loader(), gnash::SWF::DefineMorphShapeTag::loader(), gnash::SWF::DefineFontAlignZonesTag::loader(), gnash::SWF::DefineButton2Tag::loader(), gnash::SWF::DefineButtonTag::loader(), gnash::SWF::DefineButtonCxformTag::loader(), gnash::SWF::DefineBitsTag::loader(), gnash::SWF::CSMTextSettingsTag::loader(), gnash::SWF::metadata_loader(), gnash::SWFStream::open_tag(), gnash::SWF::TextRecord::read(), gnash::SWFParser::read(), gnash::SWF::SoundInfoRecord::read(), gnash::SWF::ShapeRecord::read(), gnash::GradientBevelFilter::read(), gnash::ColorMatrixFilter::read(), gnash::ConvolutionFilter::read(), gnash::GradientGlowFilter::read(), gnash::BevelFilter::read(), gnash::GlowFilter::read(), gnash::BlurFilter::read(), gnash::DropShadowFilter::read(), gnash::filter_factory::read(), gnash::SWF::ButtonRecord::read(), gnash::abc::AbcBlock::read(), gnash::SWF::DefineFontTag::readCodeTable(), gnash::readFills(), gnash::SWFMovieDefinition::readHeader(), gnash::SWF::reflex_loader(), and gnash::SWF::sprite_loader().

#define LOG_ONCE (   x)
#define LOG_TEMPLATES (   z,
  n,
  data 
)
Value:
template<BOOST_PP_ENUM_PARAMS(BOOST_PP_INC(n), typename T)>\
inline void log_##data(BOOST_PP_REPEAT(BOOST_PP_INC(n), TOKENIZE_ARGS, t)) \
{\
    if (LogFile::getDefaultInstance().getVerbosity() == 0) return; \
    boost::format f(t0); \
    using namespace boost::io; \
    f.exceptions(all_error_bits ^ (too_many_args_bit | \
                                   too_few_args_bit | \
                                   bad_format_string_bit)); \
    processLog_##data(f BOOST_PP_REPEAT_FROM_TO(1, \
            BOOST_PP_INC(n), \
            TOKENIZE_FORMAT, t));\
}

This actually creates the template functions using the TOKENIZE functions above. The templates look like this: template<typename T0 , typename T1 , typename T2> void log_error(const T0& t0 , const T1& t1 , const T2& t2) { if (LogFile::getDefaultInstance().getVerbosity() == 0) return; boost::format f(t0); using namespace boost::io; f.exceptions(all_error_bits ^ (too_many_args_bit | too_few_args_bit | bad_format_string_bit)); processLog_error(f % t1 % t2); }

Only not as nicely indented.

Use "g++ -E log.h" or "cpp log.h" to check.

#define LOG_TYPES
Value:
(error) (debug) (unimpl) (aserror) (swferror) \
    (security) (action) (parse) (trace) (abc) (network)

This is a sequence of different log message types to be used in the code. Append the name to log_ to call the function, e.g. log_error, log_unimpl.

#define N_ (   String)    gettext_noop (String)
#define TOKENIZE_ARGS (   z,
  n,
 
)    BOOST_PP_COMMA_IF(n) const T##n& t##n

Macro to add a number of arguments to the templated function corresponding to the number of template arguments. Produces code like this: "const T0& t0, const T1& t1, const T2& t2 ..."

#define TOKENIZE_FORMAT (   z,
  n,
 
)    % t##n

This heap of steaming preprocessor code magically converts printf-style statements into boost::format messages using templates. Macro to feed boost::format strings to the boost::format object, producing code like this: "% t1 % t2 % t3 ..."

#define VERBOSE_ACTION   1
#define VERBOSE_ASCODING_ERRORS   1
#define VERBOSE_MALFORMED_SWF   1
#define VERBOSE_NETWORKING   1
#define VERBOSE_PARSE   1