This file is indexed.

/usr/include/diagnostics/throwing_block_annotation.hpp is in libdiagnostics-dev 0.3.3-12.

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
139
140
141
142
143
144
145
146
/*
 * 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/throwing_block_annotation.hpp
 *
 * $Id: throwing_block_annotation.hpp,v 1.11 2005/06/23 09:54:22 esdentem Exp $
 *
 * @author Christian Schallhart
 *
 * @brief [LEVEL: beta] @ref DIAGNOSTICS_BASE_THROWING_BLOCK_ENTER
 * and @ref DIAGNOSTICS_BASE_THROWING_BLOCK_EXIT 
 *
 * @test diagnostics/macros/throwing_block_annotation.t.cpp
 */
#ifndef DIAGNOSTICS__MACROS__THROWING_BLOCK_ANNOTATION_INCLUDE_GUARD
#define DIAGNOSTICS__MACROS__THROWING_BLOCK_ANNOTATION_INCLUDE_GUARD

// ::diagnostics::logging_facility::log
#include <diagnostics/frame/logging_facility.hpp>

// DIAGNOSTICS_BASE_CONCAT
#include <diagnostics/util/preprocessor.hpp>

/**
 * @brief opens a @ref DIAGNOSTICS_BASE_THROWING_BLOCK_EXIT
 */
#define DIAGNOSTICS_BASE_THROWING_BLOCK_ENTER \
     do { bool internal__caught_exception=false; \
       try { 


#define DIAGNOSTICS_INTERNAL_WHAT_STRING_BUILDER(EXCEP,PRED,TAIL) \
                           (::std::string("EXPECTED.NAME=\"" #EXCEP "\" EXPECTED.PREDICATE=\"" #PRED "\" ") + TAIL)

#define DIAGNOSTICS_INTERNAL_WHAT_STRING_BUILDER1(EXCEP,PRED) \
                           ("EXPECTED.NAME=\"" #EXCEP "\" EXPECTED.PREDICATE=\"" #PRED "\"")


#define DIAGNOSTICS_INTERNAL_THROWING_HANDLE_TE0(LEVEL,NR_WHAT,RETHROW,EXCEP,PRED) 

#define DIAGNOSTICS_INTERNAL_THROWING_HANDLE_TE1(LEVEL,NR_WHAT,RETHROW,EXCEP,PRED) \
    catch(::diagnostics::unittest::Test_Exception & e) { \
      DIAGNOSTICS_BASE_LOG(LEVEL, \
                           ::diagnostics::TYPE_WRONG_EXCEPTION, \
                           NR_WHAT, \
                           DIAGNOSTICS_INTERNAL_WHAT_STRING_BUILDER(EXCEP,PRED,\
                           (::std::string("NAME=\"") + e.name() + "\" WHAT=\"" + e.what() + "\""))); \
      if(RETHROW) throw; else internal__caught_exception=true;  \
    } 


/**
 * @brief Closes a block which is expected to throw an exception of
 * type @a EXCEP.
 * 
 * If an exception of type @a EXCEP occurs which satisfies @a PRED,
 * no log message is generated.
 *
 * If an exception e of type @a EXCEP occurs which does not satisfy @a
 * PRED, then a (@a LEVEL, @ref diagnostics::TYPE_WRONG_EXCEPTION, @a NR_WHAT, 
 * EXPECTED.NAME="#EXCEP" EXPECTED.PREDICATE="#PRED" @a PRED_STR_WHAT(e)) is logged.
 *
 * If an exception e of a type not being convertible to @a EXCEP but
 * of type @a BASE occurs, a (@a LEVEL, @ref diagnostics::TYPE_WRONG_EXCEPTION, @a NR_WHAT, 
 * EXPECTED.NAME="#EXCEP" EXPECTED.PREDICATE="#PRED" @a STR_WHAT(e)) message is
 * logged.
 *
 * If an exception e of a type not being convertible to @a EXCEP and
 * not convertible to @a BASE occurs, a (@a LEVEL, @ref
 * diagnostics::TYPE_WRONG_EXCEPTION, @a NR_WHAT, 
 * EXPECTED.NAME="#EXCEP" EXPECTED.PREDICATE="#PRED") message is logged. 
 *
 * If an exception e of type @ref
 * diagnostics::unittest::Test_Exception is raised and @a
 * HANDLE_TE_EXLPLICITLY == 1) then a (@ a LEVEL, @ref
 * diagnostics::TYPE_WRONG_EXCEPTION, @a NR_WHAT, 
 * EXPECTED.NAME="#EXCEP" EXPECTED.PREDICATE="#PRED" NAME="e.name()" WHAT="e.what()"
 * message is logged.
 *
 * In all three of the above cases, if @a RETHROW is true, the
 * exception is rethrown, elsewise it is dropped.
 *
 * If no exception is raised, then (@a LEVEL, @ref
 * diagnostics::TYPE_MISSING_EXCEPTION, @a NR_WHAT
 * EXPECTED.NAME="#EXCEP" EXPECTED.PREDICATE="#PRED"
 * message is logged.
 */
#define DIAGNOSTICS_BASE_THROWING_BLOCK_EXIT(LEVEL,NR_WHAT,EXCEP,PRED,PRED_STR_WHAT,RETHROW,HANDLE_TE_EXLPLICITLY,BASE,STR_WHAT) \
    } \
    catch(EXCEP & e) { \
      if(!(PRED)) { \
        DIAGNOSTICS_BASE_LOG((LEVEL), \
                             ::diagnostics::TYPE_WRONG_EXCEPTION, \
                             (NR_WHAT), \
                             DIAGNOSTICS_INTERNAL_WHAT_STRING_BUILDER(EXCEP,PRED,PRED_STR_WHAT(e))); \
        if(RETHROW) throw; else internal__caught_exception=true; \
      } \
      else { \
       if(RETHROW) throw; else internal__caught_exception=true;  \
      } \
    } \
    DIAGNOSTICS_BASE_CONCAT(DIAGNOSTICS_INTERNAL_THROWING_HANDLE_TE,HANDLE_TE_EXLPLICITLY)((LEVEL),(NR_WHAT),(RETHROW),EXCEP,PRED) \
    catch(BASE & e) { \
      DIAGNOSTICS_BASE_LOG((LEVEL), \
                           ::diagnostics::TYPE_WRONG_EXCEPTION, \
                           (NR_WHAT), \
                           DIAGNOSTICS_INTERNAL_WHAT_STRING_BUILDER(EXCEP,PRED,STR_WHAT(e))); \
      if(RETHROW) throw; else internal__caught_exception=true; \
    } \
     catch(...) { \
      DIAGNOSTICS_BASE_LOG((LEVEL),::diagnostics::TYPE_WRONG_EXCEPTION,(NR_WHAT), \
                           DIAGNOSTICS_INTERNAL_WHAT_STRING_BUILDER1(EXCEP,PRED)); \
      if(RETHROW) throw; else internal__caught_exception=true;  \
    } \
    if(!internal__caught_exception) { \
      DIAGNOSTICS_BASE_LOG((LEVEL),::diagnostics::TYPE_MISSING_EXCEPTION,(NR_WHAT), \
                           DIAGNOSTICS_INTERNAL_WHAT_STRING_BUILDER1(EXCEP,PRED)); \
    } } while(false)

#endif

// vim:ts=4:sw=4