-
Notifications
You must be signed in to change notification settings - Fork 0
godexsoft/objc_callback
Folders and files
| Name | Name | Last commit message | Last commit date | |
|---|---|---|---|---|
Repository files navigation
--- C++ to Objective-C callbacks. ---
---------
Requires:
For c++03 version:
- Boost.Preprocessor
For c++11 version:
- Nothing other than variadic templates
----------------
Compatible with:
- Boost.Function
- Boost.Signals
- Probably others :-)
---------------
Usage examples:
// in obj-c (ViewController for example):
// ...
- (void) emptyCallback
{
NSLog(@"In empty callback");
}
- (void) update:(float)delta
{
// ... update something
}
- (int) mainWithArgc:(int)argc andArgv:(char**)argv
{
// ... do something
// and return a value
return 0;
}
- (void) signalCallback
{
// same as emptyCallback
}
boost::function<void()> cb1 = objc_callback<void()>(@selector(emptyCallback), self);
boost::function<void(float)> cb2 = objc_callback<void(float)>(@selector(update:), self);
boost::function<int(int, char**)> cb3 = objc_callback<int(int, char**)>(@selector(mainWithArgc:andArgv:), self);
// alternative (portable syntax):
boost::function1<void, float> cb2 = objc_callback_1<void, float>(@selector(update:), self);
// Boost.Signals example:
boost::signal<void()> sig;
sig.connect( objc_callback<void()>(@selector(signalCallback), self) );
// C++11 example:
auto cb = objc_callback<void(float)>(@selector(update:), self);
// somewhere else in c++-lands (your cross-platform c++ core application for example):
int main_app::run(int argc, char** argv)
{
// ... somewhere later
// ...
// just invoke the callback
cb1();
// update
float delta = now() - last_update;
cb2(delta);
// run main (just example)
int ret = cb3(argc, argv);
// signal
sig();
}
About
c++ to objective-c callback bridge
Resources
Stars
Watchers
Forks
Releases
No releases published
Packages 0
No packages published