98896625296b39f211aca549f88a1ae718e56f00
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
Languages
C++
86.8%
Go Template
9.1%
Ruby
4.1%