1. Stephen Waits
  2. cpp-signal

Source

cpp-signal /

Filename Size Date modified Message
doc
19 B
1.4 KB
683 B
2.6 KB
1.6 KB
41.6 KB
4.3 KB
3.9 KB
5.7 KB
805 B
1.1 KB

cpp-signal

Introduction

This is a simple C++ callback library. It's conceptually similar to FastDelegate, Qt, and countless other "typesafe callbacks in C++" articles across the web.

This library was developed with a primary goal of having an extremely simple, clean API. Secondary goals include low memory (low template bloat), zero external dependencies, and a high level of portability.

Quick Start

Using the library is incredibly simple. First, add the files to your project, Makefile, IDE, etc. Then, to use the library, simply include "signal.h".

Here's a simple example:

#include "signal.h"

void beep() { /* make speaker beep */ }

void flash() { /* make screen flash */ }

int main(int arg, char** argv)
{
    // create a signal which we'll emit any time a button is pressed
    signal<void> button_pressed;

    // connect (i.e. subscribe) functions to the signal
    button_pressed.connect(&beep);
    button_pressed.connect(&flash);

    // main loop, check for button press, and call signal
    while ( true )
    {
        if ( is_button_pressed() )
        {
            // call signal, which in turn calls all slot functionss (i.e. subscribers)
            button_pressed();
        }
    }
}

More thorough examples...

Under the Hood

TO DO

  • better documentation
  • consistent code cleanup
  • generate.rb creates a single header file
  • add License clause to source and LICENSE file