#include <iostream>#include <string>#include <iomanip>Classes | |
| struct | debug::CompileTimeChecker< true > |
| struct | debug::DebugTarget |
Namespaces | |
| namespace | debug |
Defines | |
| #define | STATIC_CHECK(expr, msg) |
| #define | DEFAULT_DEBUG_LEVEL debug::DBG_ERR |
| #define | printDbg(prefix, dbgLevel, target, msg) _printDbg((prefix), (dbgLevel), (target), msg) |
| #define | kernelPrintDbg(dbgLevel, msg) printDbg("KERNEL", (dbgLevel), debug::kernelDebugTarget, msg) |
| #define | guiPrintDbg(dbgLevel, msg) printDbg("GUI", (dbgLevel), debug::guiDebugTarget, msg) |
| #define | utilsPrintDbg(dbgLevel, msg) printDbg("UTILS", (dbgLevel), debug::utilsDebugTarget, msg) |
| #define | _printDbg(prefix, level, target, msg) |
Functions | |
| unsigned int | debug::changeDebugLevel (DebugTarget &debugTarget, unsigned int level) |
| void | debug::changeDebugLevel (unsigned int level) |
Variables | |
| const unsigned int | debug::DBG_PANIC = 0 |
| const unsigned int | debug::DBG_CRIT = 1 |
| const unsigned int | debug::DBG_ERR = 2 |
| const unsigned int | debug::DBG_WARN = 3 |
| const unsigned int | debug::DBG_API = 3 |
| const unsigned int | debug::DBG_INFO = 4 |
| const unsigned int | debug::DBG_DBG = 5 |
| #define _printDbg | ( | prefix, | |||
| level, | |||||
| target, | |||||
| msg | ) |
do { \ if (target.debugLevel >= level) { \ target.stream << level <<":"<<prefix<<":" \ << __FILE__ << ":" << __FUNCTION__ <<":"<< __LINE__ \ << ": " \ << msg \ << std::endl; \ } \ }while(0)
Low level macro for debugging.
| prefix | Prefix string for message. | |
| level | Priority of message. | |
| target | Target for debug messages (reference). | |
| msg | Message to dump. |
If given priority is enough (number is smaller than target::debugLevel), massage is printed out to the target stream with following format:
priority:prefix:fileName:functionName:line: message
| #define DEFAULT_DEBUG_LEVEL debug::DBG_ERR |
| #define guiPrintDbg | ( | dbgLevel, | |||
| msg | ) | printDbg("GUI", (dbgLevel), debug::guiDebugTarget, msg) |
Alias to printDbg for gui messages.
| dbgLevel | Priority of message. | |
| msg | Message to dump. |
Use this macro for all message important for gui.
Referenced by util::_recursiveProperty(), gui::QSMenu::addItem(), gui::QSMenu::addItemDef(), gui::Property::applyHidden(), gui::DragListView::contentsDragMoveEvent(), gui::DragListView::contentsDropEvent(), gui::TreeItem::create(), gui::QSWrapper::create(), gui::PageViewModeFactory::create(), gui::DrawingObjectFactory::create(), gui::TreeItemRef::createChild(), gui::TreeItemPdfOperator::createChild(), gui::TreeItemDict::createChild(), gui::TreeItemArray::createChild(), gui::TreeItemPage::deepReload(), gui::TreeItemDict::deepReload(), gui::TreeItemAbstract::deleteChild(), gui::QSTreeItem::disable(), gui::Property::emitChanged(), gui::PdfEditWindow::exitApp(), gui::PageSpace::findText(), gui::TreeItemDict::getChildType(), gui::TreeItemArray::getChildType(), gui::QSPdfOperatorIterator::getCurrent(), gui::Settings::getFullPathName(), gui::IconCache::getIcon(), gui::IconCache::getIconFile(), gui::PageViewMode_Annotations::getRectOfAnnotation(), gui::TreeItemPdf::haveChild(), gui::TreeItem::init(), gui::SelectPagesDialog::init(), gui::MergeDialog::initFileList(), gui::PageViewS::initializeWorkOperatorsInMode(), gui::Property::initLabel(), gui::TreeItemPage::initObserver(), gui::Settings::initSettings(), gui::TreeItem::insertItem(), gui::CommandWindow::loadHistory(), main(), gui::TreeItemAbstract::moveAllChildsFrom(), gui::MultiTreeWindow::MultiTreeWindow(), gui::TreeItemGenericObserver< pdfobjects::CPage >::notify(), gui::OptionWindow::optionsDialog(), gui::TreeWindow::paintEvent(), gui::QSMenu::popup(), gui::PropertyModeController::PropertyModeController(), gui::QSMenu::QSMenu(), gui::QSWrapper::QSWrapper(), gui::TreeItemRef::reloadSelf(), gui::TreeItemDict::remove(), gui::TreeItemCStream::remove(), gui::TreeItemArray::remove(), runCmdScripts(), gui::Base::runFile(), gui::Base::runScriptsFromPath(), gui::CommandWindow::saveHistory(), gui::PageViewS::saveImage(), gui::PageSpace::saveImage(), gui::ZoomTool::selectZoom(), gui::CommandWindow::setHistoryFile(), gui::CommandWindow::setHistorySize(), gui::TreeItemRef::setOpen(), gui::PageSpace::setResizingZone(), gui::TreeWindow::settingUpdate(), gui::TreeItemContentStreamObserver::TreeItemContentStreamObserver(), gui::TreeItemDragObject::TreeItemDragObject(), gui::TreeItemPage::uninitObserver(), gui::TreeItemAbstract::unSelect(), gui::PdfEditWindow::unsetObjectIf(), gui::RefValidator::validate(), gui::TreeItemDict::validChild(), gui::TreeItemArray::validChild(), gui::PasswordDialog::~PasswordDialog(), gui::QSCObject::~QSCObject(), gui::QSWrapper::~QSWrapper(), and gui::TreeItemContentStreamObserver::~TreeItemContentStreamObserver().
| #define kernelPrintDbg | ( | dbgLevel, | |||
| msg | ) | printDbg("KERNEL", (dbgLevel), debug::kernelDebugTarget, msg) |
Alias to printDbg for kernel messages.
| dbgLevel | Priority of message. | |
| msg | Message to dump. |
Use this macro for all message important for kernel.
Referenced by pdfobjects::CPage::_check_validity(), pdfobjects::CStream::_makeXpdfObject(), pdfobjects::CObjectSimple< Tp >::_objectChanged(), pdfobjects::CContentStream::_objectChanged(), pdfobjects::CPageAnnots::add(), pdfobjects::CPdf::addIndirectProperty(), pdfobjects::CPdf::addProperty(), textoutput::XmlOutputBuilder::build(), pdfobjects::CContentStream::CContentStream(), pdfobjects::CPdf::changeIndirectProperty(), pdfobjects::XRefWriter::changeObject(), pdfobjects::CXref::changeObject(), pdfobjects::XRefWriter::changeRevision(), pdfobjects::CPdf::changeRevision(), pdfobjects::XRefWriter::changeTrailer(), pdfobjects::CXref::changeTrailer(), observer::check_observerlist(), pdfobjects::CInlineImage::CInlineImage(), pdfobjects::CXref::cleanUp(), pdfobjects::CPdf::clone(), pdfobjects::XRefWriter::cloneRevision(), FileStreamWriter::cloneToFile(), pdfobjects::CStream::close(), pdfobjects::XRefWriter::collectRevisions(), pdfobjects::CPageAnnots::consolidate(), pdfobjects::CPdf::consolidatePageTree(), pdfobjects::CPageContents::convert(), pdfobjects::CPage::CPage(), pdfobjects::createMapping(), pdfobjects::XRefWriter::createObject(), pdfobjects::CXref::createObject(), pdfobjects::CStream::CStream(), pdfobjects::CPageAnnots::del(), pdfobjects::CContentStream::deleteOperator(), pdfobjects::CDict::delProperty(), pdfobjects::CStream::doClone(), pdfobjects::CObjectSimple< Tp >::doClone(), pdfobjects::CXref::fetch(), pdfobjects::utils::Flattener::fillObjectList(), pdfobjects::utils::Delinearizator::fillObjectList(), pdfobjects::CXref::getDocInfo(), pdfobjects::CXref::getDocInfoNF(), pdfobjects::CStream::getFilters(), pdfobjects::CPageFonts::getFontIdsAndNames(), pdfobjects::CPdf::getIndirectProperty(), pdfobjects::CPdf::getInstance(), pdfobjects::CPageDisplay::getMediabox(), pdfobjects::CPdf::getNextPage(), pdfobjects::CXref::getNumObjects(), pdfobjects::XRefWriter::getOldStyleTrailer(), pdfobjects::CPdf::getOutlines(), pdfobjects::CPdf::getPage(), pdfobjects::CPdf::getPageCount(), pdfobjects::CPdf::getPagePosition(), pdfobjects::getPrevFromTrailer(), pdfobjects::CPdf::getPrevPage(), pdfobjects::XRefWriter::getRevisionSize(), pdfobjects::XRefWriter::getStreamTrailer(), pdfobjects::CContentStream::getStringRepresentation(), pdfobjects::CXref::getTrailerEntry(), pdfobjects::CAnnotation::getType(), pdfobjects::CStreamsXpdfReader< Container >::getXpdfObject(), pdfobjects::CStream::getXpdfObject(), pdfobjects::CStream::getXpdfStream(), pdfobjects::CPdf::hasNextPage(), pdfobjects::CPdf::hasPrevPage(), pdfobjects::CXref::init(), pdfobjects::CPdf::initRevisionSpecific(), pdfobjects::CContentStream::insertOperator(), pdfobjects::CPdf::insertPage(), pdfobjects::CPdf::invalidate(), pdfobjects::CXref::knowsRef(), pdfobjects::CPdf::PageTreeKidsObserver::notify(), pdfobjects::CPdf::PageTreeNodeObserver::notify(), pdfobjects::CPdf::PageTreeRootObserver::notify(), pdfobjects::CPageAnnots::PropWatchDog::notify(), pdfobjects::CPageAnnots::ArrayWatchDog::notify(), pdfobjects::CContentStream::OperandObserver::notify(), pdfobjects::CStream::open(), pdfobjects::utils::FileStreamDataDeleter< T >::operator()(), pdfobjects::PdfFileDeleter::operator()(), pdfobjects::XRefWriter::paranoidCheck(), pdfobjects::CPageContents::parse(), pdfobjects::StateUpdater::printTextUpdate(), textoutput::PageFragment::push_back(), FileStreamWriter::putLine(), pdfobjects::CPdf::registerIndirectProperty(), pdfobjects::CPageContents::remove(), pdfobjects::CPdf::removePage(), pdfobjects::CXref::reopen(), pdfobjects::CContentStream::replaceOperator(), pdfobjects::XRefWriter::reserveRef(), pdfobjects::CXref::reserveRef(), pdfobjects::CPdf::save(), pdfobjects::XRefWriter::saveChanges(), pdfobjects::CStream::setBuffer(), pdfobjects::CXref::setCredentials(), pdfobjects::CPdf::setCredentials(), pdfobjects::CPageDisplay::setMediabox(), pdfobjects::CPdf::setPdfId(), pdfobjects::CDict::setProperty(), pdfobjects::CPdf::subsReferencies(), FileStreamWriter::trim(), pdfobjects::CXref::typeSafe(), pdfobjects::CPageAnnots::unreg_observers(), pdfobjects::CPdf::unregisterPageObservers(), pdfobjects::CPdf::unregisterPageTreeObservers(), pdfobjects::StateUpdater::updatePdfOperators(), pdfobjects::utils::OldStylePdfWriter::writeTrailer(), pdfobjects::XRefWriter::XRefWriter(), pdfobjects::CContentStream::~CContentStream(), pdfobjects::CPage::~CPage(), pdfobjects::CPdf::~CPdf(), pdfobjects::CStream::~CStream(), pdfobjects::CXref::~CXref(), and pdfobjects::XRefWriter::~XRefWriter().
| #define printDbg | ( | prefix, | |||
| dbgLevel, | |||||
| target, | |||||
| msg | ) | _printDbg((prefix), (dbgLevel), (target), msg) |
Prints message with given priority.
| prefix | Prefix for message. | |
| dbgLevel | Priority of message. | |
| msg | Message to dump. |
Wrapper to _printDbg macro with default stream where to put data. Don't use _printDbg directly unless you want to print different than default stream.
REMARKs
Don't use variables for dbgLevel.
Don't use direct priority numbers and use DBG_* macros instead. msg has to have operator >> implemented (or must be convertable to one that does).
Can be used in many ways.
printDbg("", DBG_DBG,"getExistingProperty();"); printDbg("", DBG_INFO, "Page moved to this location"); printDbg("", DBG_WARN, "This should be done this way"); printDbg("", DBG_ERR, "Value of indirect object can't be reference"); printDbg("KERNEL", DBG_CRIT, "Internal structures problem - program is about to exit"); printDbg("UTILS", DBG_PANIC, "Memmory allocation problem");
REMARK: This is a macro, because we want to output line number and file name. We can't force GCC to do inlining, we can just give a hint.
| #define STATIC_CHECK | ( | expr, | |||
| msg | ) |
{ \
debug::CompileTimeChecker<(expr) != 0> (ERROR_##msg); \
}
Compile time check. Static (compile-time) assertions with a solid debug message.
borrowed AND MODIFIED from Andrei Alexandrescu's book Modern C++ design almost the same as in BOOST library (the example in the book does not work)
| expr | Expression to be evaluated. | |
| msg | Message that will be printed if the expression evaluates to false. This has to be a valid variable name, e.g. BAD_EXPRESSION, COMPILE_TIME_CHECK_FAILED... |
Referenced by pdfobjects::IProperty::getSmartCObjectPtr(), pdfobjects::CObjectSimple< Tp >::getValue(), pdfobjects::CObjectSimple< Tp >::setStringRepresentation(), and pdfobjects::CObjectSimple< Tp >::setValue().
| #define utilsPrintDbg | ( | dbgLevel, | |||
| msg | ) | printDbg("UTILS", (dbgLevel), debug::utilsDebugTarget, msg) |
Alias to printDbg for util messages.
| dbgLevel | Priority of message. | |
| msg | Message to dump. |
Use this macro for all message important for utils.
Referenced by pdfobjects::utils::bufferFromStream(), pdfobjects::utils::ZlibFilterStreamWriter::compress(), pdfobjects::utils::NullFilterStreamWriter::compress(), pdfobjects::utils::convertStreamToDecodedData(), pdfobjects::utils::ZlibFilterStreamWriter::deflate(), pdfobjects::utils::ZlibFilterStreamWriter::deflate_buffer(), pdfobjects::utils::dictFromXpdfObj(), pdfobjects::utils::Flattener::fillObjectList(), pdfobjects::utils::Delinearizator::fillObjectList(), pdfobjects::TextSimpleOperator::getCurrentFont(), pdfobjects::TextSimpleOperator::getFontText(), pdfobjects::utils::Flattener::getInstance(), pdfobjects::utils::Delinearizator::getInstance(), pdfobjects::utils::getNodePosition(), pdfobjects::CContentStream::getOperatorsAtPosition(), pdfobjects::utils::getPropertyId(), pdfobjects::TextSimpleOperator::getRawText(), pdfobjects::utils::getSimpleValueFromArray(), pdfobjects::utils::getSimpleValueFromDict(), pdfobjects::utils::PdfDocumentWriter::getStreamData(), pdfobjects::CContentStream::getStringRepresentation(), pdfobjects::utils::getTypeFromArray(), pdfobjects::utils::getTypeFromDictionary(), pdfobjects::utils::getValueFromSimple(), pdfobjects::utils::Flattener::initReachableObjects(), pdfobjects::InlineImageCompositePdfOperator::InlineImageCompositePdfOperator(), pdfobjects::CContentStream::OperandObserver::notify(), pdfobjects::CContentStream::CStreamObserver::notify(), pdfobjects::utils::NullFilterStreamWriter::null_extractor(), pdfobjects::utils::IdCollector< Container, IdType, Comparator >::operator()(), pdfobjects::CPdf::registerPageTreeObservers(), pdfobjects::removeResolveRefMapping(), pdfobjects::utils::searchTreeNode(), pdfobjects::TextSimpleOperator::setFontData(), pdfobjects::TextSimpleOperator::setRawText(), pdfobjects::utils::setSimpleValueInArray(), pdfobjects::utils::setSimpleValueInDict(), pdfobjects::utils::setValueToSimple(), pdfobjects::SimpleGenericOperator::SimpleGenericOperator(), pdfobjects::utils::streamToCharBuffer(), pdfobjects::utils::stringToCharBuffer(), pdfobjects::utils::stripXRefStreamFields(), pdfobjects::UnknownCompositePdfOperator::UnknownCompositePdfOperator(), pdfobjects::CPdf::unregisterPageTreeObservers(), pdfobjects::StateUpdater::updatePdfOperators(), pdfobjects::utils::OldStylePdfWriter::writeContent(), pdfobjects::utils::PdfDocumentWriter::writeDocument(), pdfobjects::utils::OldStylePdfWriter::writeTrailer(), and pdfobjects::utils::xpdfObjFromString().