From 7895ce5f49c86ebe4f3a67ad2cfdd9b50f7e3c39 Mon Sep 17 00:00:00 2001 From: Ichthyostega Date: Fri, 4 Jun 2010 17:25:33 +0200 Subject: [PATCH] solve the problem with re-binding and advice::Request --- doc/devel/uml/fig141445.png | Bin 12661 -> 13377 bytes doc/devel/uml/index.html | 2 +- src/lib/advice.hpp | 6 ++--- src/lib/advice/advice.cpp | 5 ++-- src/lib/advice/index.hpp | 23 +++++++++++------ tests/lib/advice/advice-index-test.cpp | 33 ++++++++++++++++--------- uml/lumiera/128517 | 11 ++++++++- uml/lumiera/141445.diagram | 9 ++++++- uml/lumiera/5.session | 1 - 9 files changed, 60 insertions(+), 30 deletions(-) diff --git a/doc/devel/uml/fig141445.png b/doc/devel/uml/fig141445.png index 46c0f22b691664fb9ea63bababc61ae67ea69ed0..7eab04117e733f7c4d978d882d1622e679ad827a 100644 GIT binary patch literal 13377 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 LC{+l1?fbs~<#Q^Z diff --git a/doc/devel/uml/index.html b/doc/devel/uml/index.html index 6409f6544..2a066763e 100644 --- a/doc/devel/uml/index.html +++ b/doc/devel/uml/index.html @@ -147,7 +147,7 @@ Documentation
Artifact Lumiera

the main executable to be built

Depends on common

Depends on gui

Depends on proc

Depends on backend

Stereotype: executable

-

executable associated with : placement, sessionimpl, builderfacade, aframe, assembler, trafo, allocation, vframe, toolfactory, hub, buildable, abstractmo, exitnode, pathmanager, track, meta, fixedlocation, relativelocation, controllerfacade, rendergraph, pluginadapter, explicitplacement, auto, glrender, arender, renderstate, label, nodecreatertool, projector, interpolator, paramprovider, mask, mobject, source, frame, effect, buildertool, segmentationtool, link, parameter, renderengine, glbuf, procnode, stateproxy, edl, fixture, glpipe, main, conmanager, clip, vrender

+

executable associated with : explicitplacement, auto, glrender, arender, renderstate, label, nodecreatertool, projector, interpolator, paramprovider, mask, mobject, source, frame, effect, buildertool, segmentationtool, link, parameter, renderengine, glbuf, procnode, stateproxy, edl, fixture, glpipe, main, conmanager, clip, vrender, placement, sessionimpl, builderfacade, aframe, assembler, trafo, allocation, vframe, toolfactory, hub, buildable, abstractmo, exitnode, pathmanager, track, meta, fixedlocation, relativelocation, controllerfacade, rendergraph, pluginadapter

Artifact main

Stereotype: source

diff --git a/src/lib/advice.hpp b/src/lib/advice.hpp index 0ef5ede28..a91c27db0 100644 --- a/src/lib/advice.hpp +++ b/src/lib/advice.hpp @@ -171,7 +171,7 @@ namespace advice { protected: void publishProvision (PointOfAdvice*); void discardSolutions (); - void publishRequestBindingChange(); + void publishRequestBindingChange(HashVal); void registerRequest(); void deregisterRequest(); @@ -362,9 +362,9 @@ namespace advice { void defineBinding (Literal topic) { + HashVal previous_bindingKey (hash_value(*this)); setBindingPattern (Binding(topic).addTypeGuard()); - ////////////////////////////////////////////////////////////////////////////TODO: conceptual mismatch here! we don't have an "old entry", because we ourselves are the entry ;-) - publishRequestBindingChange(); + publishRequestBindingChange (previous_bindingKey); } }; diff --git a/src/lib/advice/advice.cpp b/src/lib/advice/advice.cpp index ba55fb30f..84c13de09 100644 --- a/src/lib/advice/advice.cpp +++ b/src/lib/advice/advice.cpp @@ -122,10 +122,9 @@ namespace advice { void - AdviceLink::publishRequestBindingChange() + AdviceLink::publishRequestBindingChange(HashVal previous_bindingKey) { - ////////////////////////////////////////////////////////////////////////////TODO: conceptual mismatch here! we don't have an "old entry", because we ourselves are the entry ;-) - UNIMPLEMENTED ("propagate binding change to index"); + aSys().modifyRequest(previous_bindingKey, *this); } diff --git a/src/lib/advice/index.hpp b/src/lib/advice/index.hpp index 0fa0f9201..7163e2731 100644 --- a/src/lib/advice/index.hpp +++ b/src/lib/advice/index.hpp @@ -136,6 +136,8 @@ namespace advice { * to the same memory location of a POA (point of advice). * Thus e.g. #hasProvision means this index holds an entry * pointing to exactly this given data entity. + * @note the implementation of modifying a Request entry + * explicitly relies on that definition of equality. * @note the diagnostic API is mainly intended for unit testing * and \em not implemented with focus on performance. */ @@ -339,21 +341,26 @@ namespace advice { provisionEntries_[key].publish_latest_solution (entry); } + /** @note explicitly relying on the implementation of \c == + * which checks only the memory location of the Request. + * Thus we can use the already modified Request to find + * the old entry within the index pointing to this Request. + * @param oKey the binding hash value prior to modification + */ void - modifyRequest (POA const& oldRef, POA& newEntry) + modifyRequest (HashVal oKey, POA& entry) { - HashVal oKey (hash_value(oldRef)); - HashVal nKey (hash_value(newEntry)); + HashVal nKey (hash_value(entry)); if (oKey != nKey) { - requestEntries_[oKey].remove (oldRef); - requestEntries_[nKey].append (newEntry); + requestEntries_[oKey].remove (entry); + requestEntries_[nKey].append (entry); } else - { - requestEntries_[nKey].overwrite (oldRef, newEntry); + { // rewrite Entry to include the new binding + requestEntries_[nKey].overwrite (entry, entry); } - provisionEntries_[nKey].publish_latest_solution (newEntry); + provisionEntries_[nKey].publish_latest_solution (entry); } void diff --git a/tests/lib/advice/advice-index-test.cpp b/tests/lib/advice/advice-index-test.cpp index 268089ddc..c098552c7 100644 --- a/tests/lib/advice/advice-index-test.cpp +++ b/tests/lib/advice/advice-index-test.cpp @@ -61,6 +61,12 @@ namespace test { return pattern_.matches (Binding(refSpec)); } + void + changeBinding (Literal newSpec) + { + pattern_ = Binding(newSpec).buildMatcher(); + } + /* == Adapter interface for use within the Index == */ @@ -342,19 +348,22 @@ namespace test { CHECK (_hasDefault (3)); CHECK (_hasDefault (5)); - CHECK (!idx.hasRequest (_entry (2,"cat"))); + HashVal dogHash (hash_value (_entry (5,"dog"))); + CHECK ( idx.hasRequest (_entry (5,"dog"))); + _entry (5,"dog").changeBinding("cat"); // transmogrify existing request into cat-request + CHECK (_hasDefault (5)); // of course this didn't change the solution + CHECK (!idx.hasRequest (_entry (5,"cat"))); // can't find it anymore because of changed binding - idx.modifyRequest (_entry (5,"dog"), _entry (2,"cat")); + idx.modifyRequest (dogHash, _entry (5,"cat")); - CHECK ( idx.hasRequest (_entry (2,"cat"))); - CHECK (!idx.hasRequest (_entry (5,"dog"))); + CHECK ( idx.hasRequest (_entry (5,"cat"))); CHECK (p_cnt == idx.provision_count()); CHECK (r_cnt == idx.request_count()); CHECK (_hasSolution (1,7)); CHECK (_hasSolution (6,7)); CHECK (_hasDefault (3)); - CHECK (_hasSolution (2,7)); // automatically got the current cat solution + CHECK (_hasSolution (5,7)); // automatically got the current cat solution } @@ -365,7 +374,7 @@ namespace test { uint r_cnt = idx.request_count(); uint p_cnt = idx.provision_count(); CHECK (_hasSolution (1,7)); - CHECK (_hasSolution (2,7)); + CHECK (_hasSolution (5,7)); CHECK (_hasSolution (6,7)); CHECK (_hasDefault (3)); @@ -378,7 +387,7 @@ namespace test { CHECK (p_cnt == idx.provision_count()); CHECK (r_cnt == idx.request_count()); CHECK (_hasDefault (1)); - CHECK (_hasDefault (2)); + CHECK (_hasDefault (5)); CHECK (_hasDefault (6)); CHECK (_hasSolution (3,8)); @@ -388,7 +397,7 @@ namespace test { CHECK (idx.hasProvision (_entry (7,"cat"))); CHECK (idx.hasProvision (_entry (9,"cat"))); CHECK (_hasSolution (1,9)); // all cats got the second cat solution - CHECK (_hasSolution (2,9)); + CHECK (_hasSolution (5,9)); CHECK (_hasSolution (6,9)); CHECK (_hasSolution (3,8)); // the dog is unaffected @@ -399,10 +408,10 @@ namespace test { CHECK (!idx.hasProvision (_entry (7,"cat"))); CHECK ( idx.hasProvision (_entry (4,"dog"))); - CHECK (_hasSolution (1,9)); // cats unaffected, because we're changing a shadowed cat solution - CHECK (_hasSolution (2,9)); + CHECK (_hasSolution (1,9)); // cats unaffected, because we're changing a shadowed cat provision + CHECK (_hasSolution (5,9)); CHECK (_hasSolution (6,9)); - CHECK (_hasSolution (3,4)); // but the dog got switched to the transmogrified-into-dog solution, + CHECK (_hasSolution (3,4)); // but the dog got switched to the replaced-by-dog solution, // because it was added later than the existing solution 8 // a switch within the same cluster ("cat") @@ -411,7 +420,7 @@ namespace test { CHECK ( idx.hasProvision (_entry (7,"cat"))); CHECK ( idx.hasProvision (_entry (4,"dog"))); CHECK (_hasSolution (1,7)); // because cat-7 is newly added, it shadows the older cat-9 - CHECK (_hasSolution (2,7)); + CHECK (_hasSolution (5,7)); CHECK (_hasSolution (6,7)); CHECK (_hasSolution (3,4)); // but dog remains dog diff --git a/uml/lumiera/128517 b/uml/lumiera/128517 index 28202debe..d87549fd1 100644 --- a/uml/lumiera/128517 +++ b/uml/lumiera/128517 @@ -1,6 +1,6 @@ format 58 "CommonLib" // CommonLib - revision 18 + revision 19 modified_by 5 "hiv" // class settings //class diagram settings @@ -451,6 +451,15 @@ ${class}::${name} ${(}${)}${const}${volatile} ${throw}${staticnl} + end + + classrelation 203141 // + relation 192261 -_-> + stereotype "create" + a package + cpp default "#include in source" + classrelation_ref 203141 // + b parent class_ref 166021 // ActiveProvision end end diff --git a/uml/lumiera/141445.diagram b/uml/lumiera/141445.diagram index 9d099c054..61830e5ae 100644 --- a/uml/lumiera/141445.diagram +++ b/uml/lumiera/141445.diagram @@ -58,7 +58,7 @@ end relationcanvas 129669 relation_ref 188677 // from ref 129157 z 1999 to ref 129285 no_role_a no_role_b - multiplicity_a_pos 275 240 3000 multiplicity_b_pos 237 240 3000 + multiplicity_a_pos 266 244 3000 multiplicity_b_pos 246 244 3000 end relationcanvas 129925 relation_ref 188933 // from ref 128645 z 1999 to ref 129285 @@ -117,5 +117,12 @@ relationcanvas 133125 relation_ref 191109 // no_role_a no_role_b no_multiplicity_a no_multiplicity_b end +relationcanvas 133381 relation_ref 192261 // + decenter_end 98 + from ref 129157 z 1999 stereotype "<>" xyz 109 149 3000 to point 163 194 + line 133765 z 1999 to ref 131461 + no_role_a no_role_b + no_multiplicity_a no_multiplicity_b +end preferred_whz 635 331 1 end diff --git a/uml/lumiera/5.session b/uml/lumiera/5.session index 522c2745b..293f4231c 100644 --- a/uml/lumiera/5.session +++ b/uml/lumiera/5.session @@ -42,7 +42,6 @@ open class_ref 166021 // ActiveProvision class_ref 164741 // Binding class_ref 166277 // Index - classinstance_ref 144517 // class_ref 145285 // MediaKind package_ref 131077 // ConfigQuery