An open API service indexing awesome lists of open source software.

https://github.com/shouya/dynamic_binding_demonstration

A simple implement of signal model like GTK+.
https://github.com/shouya/dynamic_binding_demonstration

Last synced: 26 days ago
JSON representation

A simple implement of signal model like GTK+.

Awesome Lists containing this project

README

        

##What is this
This project is a demonstration of the implement of signal/slot connection model like GTK+. Unlike Qt, this implement is written in pure C, and without any form of meta-programming.

##How do I use this
Sorry that you can't use this, as it is not a **practical** tool. It's only written for study use.

For check the result of the program, simply `make`, and then it will generate a binary file names `main`, and run it to see the result.

##Where should I start to read it
My advise is read from the start-up point -- main function in `main.c`.

Actually there I designed two demonstrations in the file, the `sample_demo` and the `calc_demo`. While the first one demonstrated a very simple signal connection with just destroy and some even handlers, with binding them all up dynamically and then calls. For much cooler hack, see the second one, which is a calculator with dynamic handler binding. The code performed some interesting stuff like dynamic binding changing and disconnection.

For the internal principle, you could check `g_object.c` to see how the object oriented model is implemented here and how the base of signal connection is.

For the detailed signal implement, actually it is just a self-maintained list inside an object, check `signal.c`, for these and relevant things.

Above the base, there are two object classes which are written for demonstration, they are `sample_object` and `calc_object`, separately for `sample_demo` and `calc_demo`.

Whole the project is just these, may it helps!