/usr/share/doc/libbobcat4-dev/man/repeat.3.html is in libbobcat-dev 4.08.02-2build1.
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 | <!DOCTYPE html><html><head>
<meta charset="UTF-8">
<title>FBB::repeat(3bobcat)</title>
<style type="text/css">
figure {text-align: center;}
img {vertical-align: center;}
.XXfc {margin-left:auto;margin-right:auto;}
.XXtc {text-align: center;}
.XXtl {text-align: left;}
.XXtr {text-align: right;}
.XXvt {vertical-align: top;}
.XXvb {vertical-align: bottom;}
</style>
<link rev="made" href="mailto:Frank B. Brokken: f.b.brokken@rug.nl">
</head>
<body text="#27408B" bgcolor="#FFFAF0">
<hr/>
<h1 id="title">FBB::repeat(3bobcat)</h1>
<h2 id="author">repeated function calls<br/>(libbobcat-dev_4.08.02-x.tar.gz)</h2>
<h2 id="date">2005-2017</h2>
<p>
<h2 >NAME</h2>FBB::repeat - call a (member) function a fixed number of times
<p>
<h2 >SYNOPSIS</h2>
<strong >#include <bobcat/repeat></strong><br/>
<p>
<h2 >DESCRIPTION</h2>
<p>
The <strong >FBB::repeat</strong> function template allows a function or member function to
be called a certain number of times. The functions or member functions may
define arguments. Arguments to these functions are specified when <em >repeat</em>
is called, and are perfectly forwarded by the <em >repeat</em> function
template to the (member) function called by <em >repeat</em>.
<p>
The first argument of the <em >repeat</em> function template defines the number of
times the (member) function must be called.
<p>
The <em >FBB::repeat</em> function template are defined <em >inline</em>,
allowing the compiler to `optimize away' the <em >repeat</em> function call
itself.
<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 >INHERITS FROM</h2>
-
<p>
<h2 >REPEAT FUNCTION TEMPLATE</h2>
The <em >repeat</em> function template is declared as:
<pre>
template <typename Counter, typename First, typename ...Params>
void repeat(Counter counter, First &&first, Params &&...params);
</pre>
In this declaration,
<ul>
<li> <strong >Counter</strong> represents the counter's type. Usually an <em >int</em> or
<em >size_t</em>. When calling <em >repeat</em> <em >counter</em> must be initialized to
the number of times <em >repeat</em> must call the (member) function (see
below);
<li> <strong >First</strong> represents the prototype of a function or the name of a
class. name of a class. Likewise, <em >first</em> either is the address
(name) of the function to be called or the name of an object of class
type <em >First</em>. In the latter case the object may or may not be a
<em >const</em> object.
<li> <strong >...Params</strong> represents the set of parameter types of arguments
which must be perfectly forwarded to the called function. If <em >first</em>
represents a class type object, the first argument <em >must</em> be the
address of a member function of the class <em >First</em>.
</ul>
<p>
<h2 >EXAMPLES</h2>
<pre >
#include <iostream>
#include <iterator>
#include <algorithm>
#include "../repeat"
using namespace std;
using namespace FBB;
class Object
{
public:
void member(int argc, char **argv) const;
void member2(size_t &rept, int argc, char **argv);
};
void Object::member(int argc, char **argv) const
{
cout << "member called\n";
copy(argv, argv + argc, ostream_iterator<char const *>(cout, "\n"));
}
void Object::member2(size_t &rept, int argc, char **argv)
{
cout << "member2 called, iteration " << rept++ << "\n";
copy(argv, argv + argc, ostream_iterator<char const *>(cout, "\n"));
}
void fun()
{
cout << "Fun called\n";
}
int main(int argc, char **argv)
{
Object object;
cout << "\n"
"*** The number of arguments determines the repeat-count ***\n\n";
cout << "Fun without arguments:\n";
repeat(argc, fun);
cout << "Object receiving argc and argv:\n";
repeat(argc, object, &Object::member, argc, argv);
cout << "Object receiving argc and argv, showing the iteration count:\n";
size_t count = 0;
repeat(argc, object, &Object::member2, count, argc, argv);
Object const obj;
cout << "Const Object receiving argc and argv:\n";
repeat(argc, obj, &Object::member, argc, argv);
}
</pre>
<p>
<h2 >FILES</h2>
<em >bobcat/repeat</em> - defines the class interface
<p>
<h2 >SEE ALSO</h2>
<strong >bobcat</strong>(7)
<p>
<h2 >BUGS</h2>
Be careful when using overloaded functions, as the template argument
resolution mechanism may be unable to determine which function to
call. If overloaded functions must be used, a <em >static_cast</em> is
likely required to disambiguate your intentions.
<p>
<h2 >DISTRIBUTION FILES</h2>
<ul>
<li> <em >bobcat_4.08.02-x.dsc</em>: detached signature;
<li> <em >bobcat_4.08.02-x.tar.gz</em>: source archive;
<li> <em >bobcat_4.08.02-x_i386.changes</em>: change log;
<li> <em >libbobcat1_4.08.02-x_*.deb</em>: debian package holding the
libraries;
<li> <em >libbobcat1-dev_4.08.02-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>
</body>
</html>
|