immutable-arguments(#989): proof-of concept
seems to work as assumed; we'll just have to construct a new holder tuple in place when binding arguments. Doesn't look too bad for me
This commit is contained in:
parent
91e74b0456
commit
a7cd8996aa
3 changed files with 15 additions and 15 deletions
|
|
@ -122,6 +122,12 @@ namespace control {
|
|||
: TUP(tup)
|
||||
{ }
|
||||
|
||||
/** we deliberately support immutable types as command arguments */
|
||||
ParamAccessor& operator= (ParamAccessor const&) =delete;
|
||||
ParamAccessor& operator= (ParamAccessor&&) =delete;
|
||||
ParamAccessor (ParamAccessor const&) =default;
|
||||
|
||||
|
||||
////////////////////TODO the recursion-end of the access operations goes here
|
||||
|
||||
ostream&
|
||||
|
|
@ -178,7 +184,7 @@ namespace control {
|
|||
void
|
||||
bindArguments (Arguments& args) override
|
||||
{
|
||||
params_ = args.get<ArgTuple>();
|
||||
//params_ = args.get<ArgTuple>();
|
||||
}
|
||||
|
||||
/** assign a new set of parameter values to this.
|
||||
|
|
@ -189,7 +195,7 @@ namespace control {
|
|||
void
|
||||
bindArguments (lib::diff::Rec const& paramData) override
|
||||
{
|
||||
params_ = buildTuple<Args> (paramData);
|
||||
//params_ = buildTuple<Args> (paramData);
|
||||
}
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -138,10 +138,7 @@ namespace control {
|
|||
virtual void
|
||||
bindArguments (Arguments& args) override
|
||||
{
|
||||
if (!arguments_->isValid())
|
||||
storeTuple (args.get<ArgTuple>());
|
||||
else
|
||||
arguments_->bindArguments (args);
|
||||
storeTuple (args.get<ArgTuple>());
|
||||
}
|
||||
|
||||
/** assign a new set of parameter values to this.
|
||||
|
|
@ -152,10 +149,7 @@ namespace control {
|
|||
virtual void
|
||||
bindArguments (lib::diff::Rec const& paramData) override
|
||||
{
|
||||
if (!arguments_->isValid())
|
||||
storeTuple (buildTuple<Args> (paramData));
|
||||
else
|
||||
arguments_->bindArguments (paramData);
|
||||
storeTuple (buildTuple<Args> (paramData));
|
||||
}
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -182,7 +182,7 @@ namespace test {
|
|||
{
|
||||
MARK_TEST_FUN
|
||||
gui::test::Nexus::startNewLog();
|
||||
auto cmd = gui::test::Nexus::prepareMockCmd<string, LuidH>(); //TimeSpan /////////////TODO
|
||||
auto cmd = gui::test::Nexus::prepareMockCmd<string, TimeSpan, LuidH>();
|
||||
|
||||
MockElm mock("uiElm");
|
||||
|
||||
|
|
@ -201,19 +201,19 @@ namespace test {
|
|||
CHECK (not cmd.canExec());
|
||||
|
||||
|
||||
mock.prepareCommand(cmd, Rec({text, luid})); ////////TODO clip,
|
||||
mock.prepareCommand(cmd, Rec({text, clip, luid}));
|
||||
|
||||
CHECK (cmd.canExec());
|
||||
CHECK (gui::test::Nexus::wasBound(cmd, text, luid)); ////////TODO clip,
|
||||
CHECK (gui::test::Nexus::wasBound(cmd, text, clip, luid));
|
||||
CHECK (not gui::test::Nexus::wasInvoked(cmd));
|
||||
CHECK (not gui::test::Nexus::wasInvoked(cmd, text, luid)); ////////TODO clip,
|
||||
CHECK (not gui::test::Nexus::wasInvoked(cmd, text, clip, luid));
|
||||
CHECK (not gui::test::Nexus::wasBound(cmd, "lololo"));
|
||||
|
||||
|
||||
mock.issueCommand(cmd);
|
||||
|
||||
CHECK (gui::test::Nexus::wasInvoked(cmd));
|
||||
CHECK (gui::test::Nexus::wasInvoked(cmd, text, luid)); ////////TODO clip,
|
||||
CHECK (gui::test::Nexus::wasInvoked(cmd, text, clip, luid));
|
||||
CHECK (not gui::test::Nexus::wasInvoked(cmd, " huh ", clip, luid));
|
||||
CHECK (not gui::test::Nexus::wasInvoked(cmd, text, clip));
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue