// Description: CallFunction class
// Detail: Turns initialization into a function call
// Documentation: miscellaneous.txt
#ifndef PASTELSYS_CALLFUNCTION_H
#define PASTELSYS_CALLFUNCTION_H
#include "pastel/sys/mytypes.h"
namespace Pastel
{
    //! Turns initialization into a function call.
    /*!
   Sometimes it is required to call functions in
   the time when global variables are initialized.
   This class takes a function pointer in initialization
   and calls it if it is non-zero. The given function
   pointer must be of the type 'void(*)()';
   */
    class CallFunction
    {
    public:
        typedef void (*Function)();
        //! Calls the given function.
        explicit CallFunction(Function function);
    private:
        CallFunction() = delete;
        CallFunction(const CallFunction&) = delete;
        CallFunction operator=(const CallFunction&) = delete;
    };
}
#include "pastel/sys/callfunction.hpp"
#endif