// // ObjectiveCUtilities.h // RobloxMobile // // Created by Ben Tkacheff on 11/1/12. // Copyright (c) 2012 ROBLOX. All rights reserved. // #include "boost/function.hpp" #include "boost/bind.hpp" static boost::function boostFuncFromSelector(SEL selector, id delegate) { typedef void (*func)(id, SEL); func impl = (func)[delegate methodForSelector:selector]; return boost::bind(impl, delegate, selector); } template static boost::function boostFuncFromSelector_1(SEL selector, id delegate) { typedef void (*func)(id, SEL, T); func impl = (func)[delegate methodForSelector:selector]; return boost::bind(impl, delegate, selector, _1); } template static boost::function boostFuncFromSelector_1(SEL selector, T passedArg, id delegate) { typedef void (*func)(id, SEL, T); func impl = (func)[delegate methodForSelector:selector]; return boost::bind(impl, delegate, selector, passedArg); } template static boost::function boostFuncFromSelector_2(SEL selector, id delegate) { typedef void (*func)(id, SEL, T, T2); func impl = (func)[delegate methodForSelector:selector]; return boost::bind(impl, delegate, selector, _1, _2); } template static boost::function boostFuncFromSelector_2(SEL selector, T passedArg1, id delegate) { typedef void (*func)(id, SEL, T, T2); func impl = (func)[delegate methodForSelector:selector]; return boost::bind(impl, delegate, selector, passedArg1, _2); } template static boost::function boostFuncFromSelector_2(SEL selector, T passedArg1, T2 passedArg2, id delegate) { typedef void (*func)(id, SEL, T, T2); func impl = (func)[delegate methodForSelector:selector]; return boost::bind(impl, delegate, selector, passedArg1, passedArg2); } template static boost::function boostFuncFromSelector_3(SEL selector, id delegate) { typedef void (*func)(id, SEL, T, T2, T3); func impl = (func)[delegate methodForSelector:selector]; return boost::bind(impl, delegate, selector, _1, _2, _3); } template static boost::function boostFuncFromSelector_4(SEL selector, id delegate) { typedef void (*func)(id, SEL, T, T2, T3, T4); func impl = (func)[delegate methodForSelector:selector]; return boost::bind(impl, delegate, selector, _1, _2, _3, _4); }