FBB::repeat(3bobcat)
repeated function calls
(libbobcat-dev_4.08.03-x.tar.gz)
2005-2018
NAME
FBB::repeat - call a (member) function a fixed number of times
SYNOPSIS
#include <bobcat/repeat>
DESCRIPTION
The FBB::repeat 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 repeat
is called, and are perfectly forwarded by the repeat function
template to the (member) function called by repeat.
The first argument of the repeat function template defines the number of
times the (member) function must be called.
The FBB::repeat function template are defined inline,
allowing the compiler to `optimize away' the repeat function call
itself.
NAMESPACE
FBB
All constructors, members, operators and manipulators, mentioned in this
man-page, are defined in the namespace FBB.
INHERITS FROM
-
REPEAT FUNCTION TEMPLATE
The repeat function template is declared as:
template <typename Counter, typename First, typename ...Params>
void repeat(Counter counter, First &&first, Params &&...params);
In this declaration,
- Counter represents the counter's type. Usually an int or
size_t. When calling repeat counter must be initialized to
the number of times repeat must call the (member) function (see
below);
- First represents the prototype of a function or the name of a
class. name of a class. Likewise, first either is the address
(name) of the function to be called or the name of an object of class
type First. In the latter case the object may or may not be a
const object.
- ...Params represents the set of parameter types of arguments
which must be perfectly forwarded to the called function. If first
represents a class type object, the first argument must be the
address of a member function of the class First.
EXAMPLES
#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);
}
FILES
bobcat/repeat - defines the class interface
SEE ALSO
bobcat(7)
BUGS
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 static_cast is
likely required to disambiguate your intentions.
DISTRIBUTION FILES
- bobcat_4.08.03-x.dsc: detached signature;
- bobcat_4.08.03-x.tar.gz: source archive;
- bobcat_4.08.03-x_i386.changes: change log;
- libbobcat1_4.08.03-x_*.deb: debian package holding the
libraries;
- libbobcat1-dev_4.08.03-x_*.deb: debian package holding the
libraries, headers and manual pages;
- http://sourceforge.net/projects/bobcat: public archive location;
BOBCAT
Bobcat is an acronym of `Brokken's Own Base Classes And Templates'.
COPYRIGHT
This is free software, distributed under the terms of the
GNU General Public License (GPL).
AUTHOR
Frank B. Brokken (f.b.brokken@rug.nl).