summaryrefslogtreecommitdiff
path: root/indra/llrender
diff options
context:
space:
mode:
authorNat Goodspeed <nat@lindenlab.com>2011-01-28 20:18:10 -0500
committerNat Goodspeed <nat@lindenlab.com>2011-01-28 20:18:10 -0500
commit2bafe0dc8a2eb1d99516a4af96acc93c3541a1cd (patch)
treeb444cc9bea7818d2c1cfca2aba7b67ebd134d8a6 /indra/llrender
parent2770d6f8813b6bfef89e80dfaf091287c8c0eb4d (diff)
Extend LLEventAPI to directly call other functions & methods.
Until now, LLEventAPI has only been able to register functions specifically accepting(const LLSD&). Typically you add a wrapper method to your LLEventAPI subclass, register that, have it extract desired params from the incoming LLSD and then call the actual function of interest. With help from Alain, added new LLEventAPI::add() methods capable of registering functions/methods with arbitrary parameter signatures. The code uses boost::fusion magic to implicitly match incoming LLSD arguments to the function's formal parameter list, bypassing the need for an explicit helper method. New add() methods caused an ambiguity with a previous convenience overload. Removed that overload and fixed the one existing usage. Replaced LLEventDispatcher::get() with try_call() -- it's no longer easy to return a Callable for caller to call directly. But the one known use of that feature simply used it to avoid fatal LL_ERRS on unknown function-name string, hence the try_call() approach actually addresses that case more directly. Added indra/common/lleventdispatcher_test.cpp to exercise new functionality.
Diffstat (limited to 'indra/llrender')
0 files changed, 0 insertions, 0 deletions