lumiera_/tests
Ichthyostega 2e1df16bdc settle on a concrete implementation approach based on inheritance chain
After some reconsideration, I decide to stick to the approach with the closures,
but to use a metaprotramming technique to build an inheritance chain.
While I can not decide on the real world impact of storing all those closures,
in theory this approach should enable the compiler to remove all of the
storage overhead. Since, when storing the result into an auto variable
right within scope (as demonstrated in the test), the compiler
sees the concrete type and might be able to boil down the actual
generated virtual function implementations, thereby inlining the
given closures.

Whereas, on the other hand, if we'd go the obvious conventional route
and place the closures into a Map allocated on the stack, I wouldn't
expect the compiler to do data flow analysis to prove this allocation
is not necessary and inline it away.


NOTE: there is now guarantee this inlining trick will ever work.
And, moreover, we don't know anything regarding the runtime effect.
The whole picture is way more involved as it might seem at first sight.
Even if we go the completely conventional route and require every
participating object to supply an implementation of some kind of
"Serializable" interface, we'll end up with a (hand written!)
implementation class for each participating setup, which takes
up space in the code segment of the executable. While the closure
based approach chosen here, consumes data segment (or heap) space
per instance for the functors (or function pointers) representing
the closures, plus code segment space for the closures, but the
latter with a way higher potential for inlining, since the closure
code and the generated virtual functions are necessarily emitted
within the same compilation unit and within a local (inline, not
publickly exposed) scope.
2015-04-05 18:26:49 +02:00
..
backend link tests with stringent application scope dependencies (closes #938) 2014-10-17 21:15:59 +02:00
basics WIP: pondering diff representation variants 2014-11-10 04:00:39 +01:00
core refactoring: better name for the query focus shifting operation 2015-01-08 15:13:27 +01:00
gui extended planning to define the operation of UI-Bus and model update 2015-01-17 16:08:56 +01:00
include re-arrange tests according to layer structure 2013-01-07 05:43:01 +01:00
library settle on a concrete implementation approach based on inheritance chain 2015-04-05 18:26:49 +02:00
operation reorganise test suite compartments 2014-10-17 20:02:25 +02:00
plugin Ticket #925: remove LUID from interface/plugin specifications 2014-03-16 02:21:07 +01:00
tool release prep: remove defunct autotools buildsystem 2013-10-29 03:47:50 +01:00
00helloworld.tests link tests with stringent application scope dependencies (closes #938) 2014-10-17 21:15:59 +02:00
00support.tests Test helper to show demangled C++ names 2014-11-22 03:31:59 +01:00
00test.tests Fix: test should not be locale dependant 2010-11-06 23:02:27 +01:00
10errorhandling.tests re-arrange tests according to layer structure 2013-01-07 05:43:01 +01:00
10exception.tests link tests with stringent application scope dependencies (closes #938) 2014-10-17 21:15:59 +02:00
11list.tests reorganise test suite compartments 2014-10-17 20:02:25 +02:00
11locking.tests reorganise test suite compartments 2014-10-17 20:02:25 +02:00
11luid.tests reorganise test suite compartments 2014-10-17 20:02:25 +02:00
11mpool.tests reorganise test suite compartments 2014-10-17 20:02:25 +02:00
11priqueue.tests reorganise test suite compartments 2014-10-17 20:02:25 +02:00
11safeclib.tests reorganise test suite compartments 2014-10-17 20:02:25 +02:00
11slist.tests reorganise test suite compartments 2014-10-17 20:02:25 +02:00
11time.tests reorganise test suite compartments 2014-10-17 20:02:25 +02:00
12metaprogramming.tests reduce the load of some tests 2014-10-18 05:09:18 +02:00
15library.tests initial syntax draft 2015-04-02 03:30:20 +02:00
20config_lowlevel.tests re-arrange tests according to layer structure 2013-01-07 05:43:01 +01:00
20filedescriptor.tests
20filehandle.tests Exclusive file locking 2010-07-21 04:49:51 +02:00
20threads.tests
22config_highlevel.tests re-arrange tests according to layer structure 2013-01-07 05:43:01 +01:00
25fundamental.tests link tests with stringent application scope dependencies (closes #938) 2014-10-17 21:15:59 +02:00
30backend-file.tests
30backend-scheduler.tests
30backend-threadpool.tests disable broken Thread-joining test. See Ticket #803 2011-05-21 06:52:50 +02:00
30interfaces.tests
30mmap.tests add mmaping of exact blocks 2010-07-21 04:49:50 +02:00
30resourcecollector.tests disable the resourcecollector test (not finished yet) 2010-07-16 05:39:11 +02:00
31fileheader.tests extend fileheader with some flags and endianess mark 2010-07-21 06:13:59 +02:00
31plugin.tests integrate priority queue: lumiera namespace prefix; unit test pass 2013-09-13 05:44:58 +02:00
40core.tests link tests with stringent application scope dependencies (closes #938) 2014-10-17 21:15:59 +02:00
41asset.tests reorganise some boost::format usage 2013-09-01 17:36:05 +02:00
42query.tests re-arrange tests according to layer structure 2013-01-07 05:43:01 +01:00
43session.tests amend harmless PlacementIndex test failures. Test Suite PASS 2014-05-11 02:08:53 +02:00
44builder.tests re-arrange tests according to layer structure 2013-01-07 05:43:01 +01:00
45controller.tests re-arrange tests according to layer structure 2013-01-07 05:43:01 +01:00
46engine.tests render job dummy passes unit test 2013-09-07 02:37:17 +02:00
47playout.tests re-arrange tests according to layer structure 2013-01-07 05:43:01 +01:00
48proc-operate.tests re-arrange tests according to layer structure 2013-01-07 05:43:01 +01:00
51-gui-model.tests extended planning to define the operation of UI-Bus and model update 2015-01-17 16:08:56 +01:00
80-regression.tests re-arrange tests according to layer structure 2013-01-07 05:43:01 +01:00
DIR_INFO update some DIR_INFO entries 2011-04-05 00:44:30 +02:00
SConscript enable special unit-tests to link against the gui 2014-10-18 04:27:07 +02:00
test.conf cumulated build/release fixes 2011-03-31 18:43:50 +02:00
test.sh test.sh: double VSize limits to prevent frequent test suite failure 2013-10-13 02:50:04 +02:00
testrunner.cpp minor style fix 2015-01-02 11:48:02 +01:00