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,

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

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).