This file is indexed.

/usr/include/vdk2/vdk/sigc_addon.h is in libvdk2-dev 2.4.0-5.2.

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
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
/* -*- c++ -*- */
/*
 * ===========================
 * VDK Visual Development Kit
 * Version 1.0.3
 * November 1999
 * ===========================
 *
 * Copyright (C) 1998, Mario Motta
 * Developed by Mario Motta <mmotta@guest.net>
 *
 * This library is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Library General Public
 * License as published by the Free Software Foundation; either
 * version 2 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
 * Library General Public License for more details.
 *
 * You should have received a copy of the GNU Library General Public
 * License along with this library; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
 * 02111-130
 */ 
#ifndef _sigc_addon_h_
#define _sigc_addon_h_
#ifdef USE_SIGCPLUSPLUS
#include <sigc++/signal_system.h>

#ifdef SIGC_CXX_NAMESPACES // currently code depends on this!
using namespace std;
using namespace SigC;
#endif

/*!
  \class VDKSignal0
  \brief makes a signal of type: Signal2<Ret, VDKObject*, P1>

   This template basically makes a signal of type:
             Signal2<Ret, VDKObject*, P1>
    what also accepts slots of type:
             Slot1<Ret,P1>
    for VDKSignal1<Ret, P1>.
    Attention: To emit a signal like this you have to call
    'emit(VDKObject* ob, P1)' , that means 'emit(P1)' is not available.
    This must be as we must handle all subscribed signal_receivers equal.
    This nameing convention also applies on the other classes, so
    VDKSignal0<Ret> wraps Signal0<Ret> and Signal1<Ret, VDKObject*>.
 
    For the moment you can not connect two VDKSignal#'s dircetly, as
    VDKSignal#.slot() is not availbale. But in real life (code) you should
    not do it either. Coupling a SigC::Signal# on a VDKSignal# works, what
    is what you (probably) want instead.
*/
template<class Ret, class T>
class DualSignal0 : public SigC::Signal1<Ret, T>,
		    public SigC::Signal0<Ret>
{
private:
/*     Ret emit(){}; // Don't use!!! */
/*     Ret operator()(){} // also */
public:
     typedef SigC::Signal0<Ret> short_signal_t;
     typedef SigC::Signal1<Ret,T> long_signal_t;

     Connection connect(const Slot0<Ret> &sl)
     {return short_signal_t::connect(sl);}

     Connection connect(const Slot1<Ret, T> &sl)
     {return long_signal_t::connect(sl);}

     Ret emit(T obj)
     {short_signal_t::emit();
     return long_signal_t::emit(obj);}

     Ret operator()(T obj)
     {short_signal_t::emit();
     return long_signal_t::emit(obj);}

     bool empty() const
     {return (short_signal_t::empty() &&
	      long_signal_t::empty());}
};

template<class Ret, class T, class P1>
class 
DualSignal1 : public SigC::Signal2<Ret, T, P1>,
	      public SigC::Signal1<Ret, P1>
{
private:
     Ret emit(P1){}; // Don't use!!!
     Ret operator()(P1){} // also 
public:
     typedef SigC::Signal1<Ret,P1> short_signal_t;
     typedef SigC::Signal2<Ret,T,P1> long_signal_t;

     Connection connect(const Slot1<Ret,P1> &sl)
     {return short_signal_t::connect(sl);}

     Connection connect(const Slot2<Ret, T,P1> &sl)
     {return long_signal_t::connect(sl);}

     Ret emit(T obj, P1 p1)
     {short_signal_t::emit(p1);
     return long_signal_t::emit(obj,p1);}

     Ret operator()(T obj, P1 p1)
     {short_signal_t::emit(p1);
     return long_signal_t::emit(obj,p1);}

     bool empty() const
     {return (short_signal_t::empty() &&
	      long_signal_t::empty());}
};

template<class Ret, class T, class P1, class P2>
class 
DualSignal2 : public SigC::Signal3<Ret, T, P1, P2>,
	     public SigC::Signal2<Ret, P1, P2>
{
private:
     Ret emit(P1,P2){}; // Don't use!!!
     Ret operator()(P1,P2){} // also 
public:
     typedef SigC::Signal2<Ret,P1,P2> short_signal_t;
     typedef SigC::Signal3<Ret,T,P1,P2> long_signal_t;

     Connection connect(const Slot2<Ret,P1,P2> &sl)
     {return short_signal_t::connect(sl);}

     Connection connect(const Slot3<Ret, T,P1,P2> &sl)
     {return long_signal_t::connect(sl);}

     Ret emit(T obj, P1 p1, P2 p2)
     {short_signal_t::emit(p1,p2);
     return long_signal_t::emit(obj,p1,p2);}

     Ret operator()(T obj, P1 p1, P2 p2)
     {short_signal_t::emit(p1,p2);
     return long_signal_t::emit(obj,p1,p2);}

     bool empty() const
     {return (short_signal_t::empty() &&
	      long_signal_t::empty());}
};

template<class Ret, class T, class P1, class P2, class P3>
class 
DualSignal3 : public SigC::Signal4<Ret, T, P1, P2, P3>,
	     public SigC::Signal3<Ret, P1, P2, P3>
{
private:
     Ret emit(P1,P2,P3){}; // Don't use!!!
     Ret operator()(P1,P2,P3){} // also 
public:
     typedef SigC::Signal3<Ret,P1,P2,P3> short_signal_t;
     typedef SigC::Signal4<Ret,T,P1,P2,P3> long_signal_t;

     Connection connect(const Slot3<Ret,P1,P2,P3> &sl)
     {return short_signal_t::connect(sl);}

     Connection connect(const Slot4<Ret, T,P1,P2,P3> &sl)
     {return long_signal_t::connect(sl);}

     Ret emit(T obj, P1 p1, P2 p2,P3 p3)
     {short_signal_t::emit(p1,p2,p3);
     return long_signal_t::emit(obj,p1,p2,p3);}

     Ret operator()(T obj, P1 p1, P2 p2, P3 p3)
     {short_signal_t::emit(p1,p2,p3);
     return long_signal_t::emit(obj,p1,p2,p3);}

     bool empty() const
     {return (short_signal_t::empty() &&
	      long_signal_t::empty());}
};

template<class Ret>
class VDKSignal0 : public DualSignal0<Ret, VDKObject*>{};

template<class Ret, class P1>
class VDKSignal1 : public DualSignal1<Ret, VDKObject*, P1>{};

template<class Ret, class P1, class P2>
class VDKSignal2 : public DualSignal2<Ret, VDKObject*, P1, P2>{};

template<class Ret, class P1, class P2, class P3>
class VDKSignal3 : public DualSignal3<Ret, VDKObject*, P1, P2, P3>{};

#endif /* USE_SIGCPLUSPLUS */
#endif /* !_sigc_addon_h_ */