[Clam-devel] Proof of concept: New callback controls
David García Garzón
dgarcia at iua.upf.edu
Sun Feb 15 18:45:59 PST 2009
On Pau's demand, I attach a proof of concept of a simplified interface for
callback based controls.
Instead of using a different class for InControlTmpl's
(CascadedTypedInControl's in the typed incarnation) and being forced to
include the concrete Processing type as a second template parameter, the
proposal is, to use an interface like that:
class Myprocessing ...
InControl<float> _inControl1;
InControl<float> _inControl2;
InControl<std::string> _inControl3;
MyProcessing()
: _inControl1(this)
, _inControl2(this, &MyProcessing::ControlCallback)
, _inControl3(this, &MyProcessing::StringControlCallback)
{....
instead of something like:
class Myprocessing ...
InControl<float> _inControl1;
CascadedInControl<float,MyProcessing> _inControl2;
CascadedInControl<std::string,MyProcessing> _inControl3;
MyProcessing()
: _inControl1(this)
, _inControl2(this, &MyProcessing::ControlCallback)
, _inControl3(this, &MyProcessing::StringControlCallback)
{....
The trick, instead of templating the whole control class by the processing
type, just template an overloaded constructor. The parameter chooses
implicitly the processing type, keeping the user code template cleaner. The
templated constructor creates a callback wrapper that is called later, while
the regular constructor creates a null callback instead, so the same class can
deal with both by polimorphism.
Changes to be done are minimum and the transition can be progressive.
Overloads can be made to support existing id based callbacks and even
callbacks receiving a reference to the control object.
Do you buy it?
--
David García Garzón
(Work) dgarcia at iua dot upf anotherdot es
http://www.iua.upf.edu/~dgarcia
-------------- next part --------------
A non-text attachment was scrubbed...
Name: callback.cxx
Type: text/x-c++src
Size: 2203 bytes
Desc: not available
URL: <http://lists.clam-project.org/pipermail/clam-devel-clam-project.org/attachments/20090216/d6f4c664/attachment-0004.cxx>
More information about the clam-devel
mailing list