Overview
Examples
Screenshots
Comparisons
Applications
Download
Documentation
Bazaar
Status & Roadmap
FAQ
Authors & License
Forums
Funding Ultimate++
Search on this site











SourceForge.net Logo

Callback

 

Basic Callbacks

 

 

main.cpp

 

#include <Core/Core.h>

 

using namespace Upp;

 

struct Foo {

    int x;

 

    void Action()                { Cout() << "Action: " << x << '\n'; }

    void ActionWithParam(int y)  { Cout() << "ActionWithParam: " << x + y << '\n'; }

 

    Callback WhenDo;

    void Do()                    { WhenDo(); }

 

    Foo(int x = 0) : x(x) {}

};

 

void Fn()

{

    Cout() << "Fn!" << '\n';

}

 

struct Bar {

    Foo foo;

 

    void Action() { Cout() << "foo's Do called\n"; }

 

    typedef Bar CLASSNAME;

 

    Bar() { foo.WhenDo = THISBACK(Action); }

};

 

struct Safe : Pte<Safe> {

    void Action() { Cout() << "safe action!\n"; }

};

 

CONSOLE_APP_MAIN

{

    Foo a(10);

    Callback cb1 = callback(&a, &Foo::Action);

    Callback cb2 = callback(Fn);

    Callback1<int> cb3 = callback(&a, &Foo::ActionWithParam);

    Callback cb4 = callback1(&a, &Foo::ActionWithParam, 30);

 

    cb1();

    cb2();

    cb3(10);

    cb4();

 

    Cout() << "---------\n";

    cb4 << cb2;

    cb4();

 

    Cout() << "---------\n";

    Bar b;

    b.foo.Do();

 

    Cout() << "---------\n";

    {

        Safe f;

        cb4 = pteback(&f, &Safe::Action);

        Cout() << "callback valid: " << (bool)cb4 << '\n';

        cb4();

    }

    Cout() << "callback valid: " << (bool)cb4 << '\n';

    cb4();

}

 

 

 

 

Do you want to contribute?