/usr/include/diagnostics/macros/block_annotation.hpp is in libdiagnostics-dev 0.3.3-12build1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 | /*
* Diagnostics - a unified framework for code annotation, logging,
* program monitoring, and unit-testing.
*
* Copyright (C) 2009 Christian Schallhart <christian@schallhart.net>,
* Michael Tautschnig <tautschnig@forsyte.de>
* 2008 model.in.tum.de group, FORSYTE group
* 2006-2007 model.in.tum.de group
* 2002-2005 Christian Schallhart
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/
/**
* @file diagnostics/macros/block_annotation.hpp
*
* $Id: block_annotation.hpp,v 1.9 2005/06/23 09:54:21 esdentem Exp $
*
* @author Christian Schallhart
*
* @brief [LEVEL: beta] The @ref DIAGNOSTICS_BASE_BLOCK_ENTER and
* @ref DIAGNOSTICS_BASE_BLOCK_EXIT macros.
*
* @test diagnostics/macros/block_annotation.t.cpp
*/
#ifndef DIAGNOSTICS__MACROS__BLOCK_ANNOTATION_HPP__INCLUDE_GUARD
#define DIAGNOSTICS__MACROS__BLOCK_ANNOTATION_HPP__INCLUDE_GUARD
// ::diagnostics::logging_facility::log
#include <diagnostics/frame/logging_facility.hpp>
// basefile and the like
#include <diagnostics/frame/pp_config.hpp>
DIAGNOSTICS_NAMESPACE_BEGIN;
INTERNAL_NAMESPACE_BEGIN;
/**
* @brief helper for enter/exit log-messages. Constructor sends the enter,
* destructor sends the exit record.
*/
template<Type_t TYPE_ENTER,Type_t TYPE_EXIT,Level_t LEVEL,int NR_WHAT,int LINE>
class Block_Guard
{
public:
inline Block_Guard(::std::string const & str_what,
char const * const base_file_name,
char const * const file_name) :
m_str_what(str_what),
m_base_file_name(base_file_name),
m_file_name(file_name)
{
::DIAGNOSTICS_NAMESPACE::Logging_Facility::log
(LEVEL,
TYPE_ENTER,
NR_WHAT,
m_str_what,
m_base_file_name,
m_file_name,
LINE);
}
inline ~Block_Guard()
{
::DIAGNOSTICS_NAMESPACE::Logging_Facility::log
(LEVEL,
TYPE_EXIT,
NR_WHAT,
m_str_what,
m_base_file_name,
m_file_name,
LINE);
}
private:
::std::string const m_str_what;
char const * const m_base_file_name;
char const * const m_file_name;
};
INTERNAL_NAMESPACE_END;
DIAGNOSTICS_NAMESPACE_END;
/**
* @brief Sets up block guard.
*
* @note The line/file/basefile information is taken from the entering position
*
* @param LEVEL the log level of type @ref diagnostics::Level_t to be
* used int the entering/exit messages
* @param TYPE_ENTER the type of log-message to be generated when
* entering the block (of type @ref diagnostics::Type_t)
* @param TYPE_EXIT the type of log-message to be generated when
* exiting the block (of type @ref diagnostics::Type_t)
* @param NR_WHAT the client specific nr_what field to be used in the
* entering/exit log message
* @param STR_WHAT the client specific str_what field to be used in
* the entering/exit log message
*
*/
#define DIAGNOSTICS_BASE_BLOCK_GUARD(LEVEL,TYPE_ENTER,TYPE_EXIT,NR_WHAT,STR_WHAT) \
::DIAGNOSTICS_NAMESPACE::INTERNAL_NAMESPACE::Block_Guard< \
(TYPE_ENTER), \
(TYPE_EXIT), \
(LEVEL), \
(NR_WHAT), \
__LINE__ > \
diagnostics__internal__block_guard((STR_WHAT), (DIAGNOSTICS_BASE_FILE), __FILE__)
/**
* @brief Sets up block enter/exit combination.
*
* Equivalent to { @ref DIAGNOSTICS_BASE_BLOCK_GUARD(LEVEL,TYPE_ENTER,TYPE_EXIT,NAME,WHAT) { ... } }
*/
#define DIAGNOSTICS_BASE_BLOCK_ENTER(LEVEL,TYPE_ENTER,TYPE_EXIT,NR_WHAT,STR_WHAT) \
do { DIAGNOSTICS_BASE_BLOCK_GUARD((LEVEL),(TYPE_ENTER),(TYPE_EXIT),(NR_WHAT),(STR_WHAT)); {
/**
* @brief closes a @ref DIAGNOSTICS_BASE_BLOCK_ENTER.
*/
#define DIAGNOSTICS_BASE_BLOCK_EXIT } } while(false)
#endif
// vim:ts=4:sw=4
|