This file is indexed.

/usr/share/doc/libbobcat3-dev/man/ranger.3.html is in libbobcat-dev 3.19.01-1ubuntu1.

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
194
195
196
197
198
199
200
<html><head>
<title>FBB::Ranger</title>
<link rev="made" href="mailto:Frank B. Brokken: f.b.brokken@rug.nl">
</head>
<body text="#27408B" bgcolor="#FFFAF0">
<hr>
<h1>FBB::Ranger</h1>
<h2>libbobcat-dev_3.19.01-x.tar.gz</h2>
<h2>2005-2013</h2>

<html><head>
<link rev="made" href="mailto:Frank B. Brokken: f.b.brokken@rug.nl">
</head>
<body text="#27408B" bgcolor="#FFFAF0">
<hr>
<h1></h1>

<html><head>
<title>FBB::Ranger(3bobcat)</title>
<link rev="made" href="mailto:Frank B. Brokken: f.b.brokken@rug.nl">
</head>
<body text="#27408B" bgcolor="#FFFAF0">
<hr>
<h1>FBB::Ranger(3bobcat)</h1>
<h2>libbobcat-dev_3.19.01-x.tar.gz Error handler</h2>
<h2>2005-2013</h2>


<p>
<h2>NAME</h2>FBB::Ranger - generalizes ranges for range-based for-loops
<p>
<h2>SYNOPSIS</h2>
    <strong>#include &lt;bobcat/ranger&gt;</strong><br>
<p>
<h2>DESCRIPTION</h2>
<p>
The <em>Ranger</em> class template defines ranges that can be used with range-based
for-loops. The standard range-based for-loop requires for its
range-specificiation an array or an iterator range as offered by, e.g.,
containers (through their <em>begin</em> and <em>end</em> members. Ranges defined by a
pair of pointers or by a subrange defined by iterator expressions cannot
currently be used in combination with range-based for-loops. 
<p>
<em>Ranger</em> extends the applicability of range-based for-loops by turning pairs
of pointers, an initial pointer and a pointer count, or a pair of iterators
into a range that can be used by range-based for-loops.
<p>
<em>Ranger</em> is a class template requiring one template type parameter:
<em>Iterator</em>, an iterator or pointer type reaching the data when dereferenced.
<p>
<em>Ranger</em>'s users don't have to specify <em>Ranger</em>'s template type. The
function template <em>ranger</em> returns the appropriate <em>Ranger</em> object.
<p>
<h2>NAMESPACE</h2>
    <strong>FBB</strong><br>
    All constructors, members, operators and manipulators, mentioned in this
man-page, are defined in the namespace <strong>FBB</strong>.
<p>
<h2>FREE FUNCTION</h2>
    When using the following free functions, any (subrange) of iterators or
pointers can be used. With iterators subranges of <em>reverse iterators</em> can
also be specified. The <strong>EXAMPLE</strong> section below illustrates the use of the
<em>ranger</em> function templates.
    <ul>
    <li> <strong>Ranger&lt;Iterator&gt; ranger(Iterator &amp;&amp;begin, Iterator &amp;&amp;end)</strong>:<br>
        this function template returns a <em>Ranger</em> object for the (sub)range
        defined by two (reverse) iterators;
    <li> <strong>Ranger&lt;Iterator&gt; ranger(Iterator &amp;&amp;begin, size_t count)</strong>:<br>
        this function template returns a <em>Ranger</em> object for the (sub)range
        defined by the (reverse) iterator range <em>begin</em> and <em>begin +
        count</em>;
    <li> <strong>Ranger&lt;Data *&gt; ranger(Data *begin, Data *end)</strong>:<br>
        this function template returns a <em>Ranger</em> object for the (sub)range
        defined by the two pointers <em>begin</em> and <em>end</em>;
    <li> <strong>Ranger&lt;Data *&gt; ranger(Data *begin, size_t count)</strong>:<br>
        this function template returns a <em>Ranger</em> object for the (sub)range
        defined by the two pointers <em>begin</em> and <em>begin + count</em>. 
    </ul>
<p>
<h2>CONSTRUCTORS</h2>
    Below, <em>Iterator</em> refers to the <em>Ranger</em> class template's type
parameter. Although named 'Iterator' it can also be a pointer to some data
type (e.g., <em>std::string *</em>).
    <ul>
    <li> <strong>Ranger(Iterator const &amp;begin, Iterator const &amp;end)</strong>:<br>
        A <em>Ranger</em> object can be passed as range-specifier in a range-based
for-loop. All elements defined by the range will subsequently be visited by
the range-based for-loop.
    </ul>
    The copy and move constructors are available.
<p>
<h2>OVERLOADED OPERATORS</h2>
    The copy and move assignment operators are available.
<p>
<h2>MEMBER FUNCTIONS</h2>
    <ul>
    <li> <strong>Iterator const &amp;begin() const</strong>:<br>
        returns (a copy of) the <em>begin</em> iterator passed to the <em>Ranger</em>'s
constructor. Note that if <em>Iterator</em> was a pointer type (like <em>int *</em>) the
data to which the iterator returned by <em>begin()</em> can actually be modified,
as the member's return type (using <em>int *</em> for <em>Iterator</em>) becomes <em>int
* const &amp;</em>, so a reference to a constant pointer to an <em>int</em>. This is
perfectly OK: if the data themselves should be immutable, then the data type
must be defined as <em>int const</em>, which is automatically the case when passing
<em>int const *</em> data. See the <strong>EXAMPLE</strong> section for an illustration.
    <li> <strong>Iterator const &amp;end() const</strong>:<br>
        returns (a copy of) the <em>end</em> iterator passed to the <em>Ranger</em>'s
constructor. 
    </ul>
    If reverse iterators are passed to <em>Ranger</em>'s constructor, then 
    the <em>begin</em> and <em>end</em> members return <em>reverse iterators</em>. Since 
the intended use of <em>Ranger</em> objects is to define a range for range-base
for-loops, members like <em>rbegin</em> and <em>rend</em> can be omitted from
<em>Ranger</em>.
<p>
<h2>EXAMPLE</h2>
    <pre>
#include &lt;vector&gt;
#include &lt;iostream&gt;

#include &lt;bobcat/ranger&gt;

using namespace std;
using namespace FBB;

int main()
{
    vector&lt;int&gt; iv {1, 2, 3, 4, 5};
                                    // display and modify a subrange
    for(auto &amp;el: ranger(iv.rbegin() + 1, iv.rend() - 1))
        cout &lt;&lt; el++ &lt;&lt; ' ';
    cout &lt;&lt; '\n';
                                    // display a reversed range
    for(auto &amp;el: ranger(iv.rbegin() + 1, iv.rend() - 1))
        cout &lt;&lt; el &lt;&lt; ' ';
    cout &lt;&lt; '\n';
                                    // same: display using a count
    for(auto &amp;el: ranger(iv.rbegin() + 1, 3))
        cout &lt;&lt; el &lt;&lt; ' ';
    cout &lt;&lt; '\n';

    int intArray[] = {1, 2, 3, 4, 5};  
                                    // display and modify elements 
                                    // in a pointer-based range
    for(auto &amp;el: ranger(intArray + 1, intArray + 3))
        cout &lt;&lt; el++ &lt;&lt; ' ';
    cout &lt;&lt; '\n';
                                    // data now modified
    for(auto &amp;el: ranger(intArray + 1, intArray + 3))
        cout &lt;&lt; el &lt;&lt; ' ';
    cout &lt;&lt; '\n';
                                    // using a count rather than an
                                    // end-pointer
    for(auto &amp;el: ranger(intArray + 1, 3))
        cout &lt;&lt; el &lt;&lt; ' ';
    cout &lt;&lt; '\n';

    int const constInts[] = {1, 2, 3, 4, 5};

                                    // data can't be modified
    for(auto &amp;el: ranger(constInts + 1, constInts + 3))
        cout &lt;&lt; el &lt;&lt; ' ';
    cout &lt;&lt; '\n';
}

</pre>

<p>
<h2>FILES</h2>
    <em>bobcat/ranger</em> - defines the class interface
<p>
<h2>SEE ALSO</h2>
    <strong>bobcat</strong>(7)
<p>
<h2>BUGS</h2>
    None Reported.
<p>

<h2>DISTRIBUTION FILES</h2>
    <ul>
    <li> <em>bobcat_3.19.01-x.dsc</em>: detached signature;
    <li> <em>bobcat_3.19.01-x.tar.gz</em>: source archive;
    <li> <em>bobcat_3.19.01-x_i386.changes</em>: change log;
    <li> <em>libbobcat1_3.19.01-x_*.deb</em>: debian package holding the
            libraries;
    <li> <em>libbobcat1-dev_3.19.01-x_*.deb</em>: debian package holding the
            libraries, headers and manual pages;
    <li> <em>http://sourceforge.net/projects/bobcat</em>: public archive location;
    </ul>
<p>
<h2>BOBCAT</h2>
    Bobcat is an acronym of `Brokken's Own Base Classes And Templates'.
<p>
<h2>COPYRIGHT</h2>
    This is free software, distributed under the terms of the 
    GNU General Public License (GPL).
<p>
<h2>AUTHOR</h2>
    Frank B. Brokken (<strong>f.b.brokken@rug.nl</strong>).
<p>