LUMIERA.clone/src/lib/diff
Ichthyostega 5a37bce855 Lib/Diff: extend PlantingHandle to allow for placment-new
...this extension was spurred by the previeous refactoring.
Since 'emplace' now clearly denotes an operation to move-embed an existing object,
we could as well offer a separate 'create' API, which would take forwarding
arguments as usual and just delegates to the placement-new operation 'create'
already available in the InPlaceBuffer class.

Such would be a convenience shortcut and is not strictly necessary,
since move-construction is typically optimised away; yet it would also
allow to support strictly non-copyable payload types.

This refactoring also highlights a fuzziness in the existing design,
where we just passed the interface type, while being sloppy about the
DEFAULT type. In fact this *is* relevant, since any kind of construction
might fail, necessitating to default-construct a placeholder, since
InPlaceBuffer was intended for zero-overhead usage and thus has in itself
no means to know about the state of its buffer's contents. Thus the
only sane contract is that there is always a valid object emplaced
into the buffer, which in turn forces us to provide a loophole for
class hierarchies with an abstract base class -- in such a case the
user has to provide a fallback type explicitly.
2021-05-02 19:40:11 +02:00
..
diff-language.hpp Diff-Framework: add clean-up hook to diff-application 2019-12-15 15:06:04 +01:00
diff-mutable.hpp DiffFramework: simplify existing bindings 2021-01-23 12:55:10 +01:00
diff.cpp Timeline: decide upon the diff format expected for creating a timeline 2018-10-13 02:46:09 +02:00
gen-node.cpp Diff-Listener: need a really basic test 2019-12-12 23:41:26 +01:00
gen-node.hpp Lib: simplified optional access to nested record attributes 2020-03-14 23:52:04 +01:00
index-table.hpp allow for iterative access to the snapshot data in the lookup table 2015-01-04 14:23:12 +01:00
list-diff-application.hpp Diff-Framework: add clean-up hook to diff-application 2019-12-15 15:06:04 +01:00
list-diff-detector.hpp Library: replace boost::noncopyable by our own library solution 2018-03-24 05:35:13 +01:00
list-diff.hpp DOC: fix syntax of some doxygen links 2018-09-21 14:33:12 +02:00
mutation-message.hpp Global-Layer-Renaming: adjust namespace qualification 2018-11-15 23:59:23 +01:00
record.hpp Lib/Diff: extend PlantingHandle to allow for placment-new 2021-05-02 19:40:11 +02:00
test-mutation-target.hpp Lib/Diff: prefer the name "emplace" over "build" 2021-05-02 18:31:47 +02:00
tree-diff-application.hpp Project: update and clean-up Doxygen configuration 2021-01-24 19:35:45 +01:00
tree-diff-traits.hpp Diff-Listener: define API 2019-12-14 23:35:16 +01:00
tree-diff.cpp Lib/Diff: prefer the name "emplace" over "build" 2021-05-02 18:31:47 +02:00
tree-diff.hpp Diff-Listener: finished and unit test pass (closes: #1206) 2019-12-15 21:40:09 +01:00
tree-mutator-attribute-binding.hpp Project: update and clean-up Doxygen configuration 2021-01-24 19:35:45 +01:00
tree-mutator-collection-binding.hpp Lib/Diff: prefer the name "emplace" over "build" 2021-05-02 18:31:47 +02:00
tree-mutator-diffmutable-binding.hpp DiffFramework: simplify existing bindings 2021-01-23 12:55:10 +01:00
tree-mutator-gen-node-binding.hpp Diff-Framework: investigate simplification for the most common case 2021-01-22 12:38:45 +01:00
tree-mutator-listener-binding.hpp Diff-Listener: add a variant to trigger also on value assignment (see #1206) 2020-03-15 23:11:14 +01:00
tree-mutator-noop-binding.hpp Lib/Diff: prefer the name "emplace" over "build" 2021-05-02 18:31:47 +02:00
tree-mutator.hpp Project: update and clean-up Doxygen configuration 2021-01-24 19:35:45 +01:00