Commit graph

1670 commits

Author SHA1 Message Date
cb73ae2d2c concrete implementation of diff application (finished concept draft)
This implements the application of our new list diff language
to a target sequence given within a vector. Unit test pass
2014-12-11 04:46:47 +01:00
8d0ce0dd3a experiment with how to represent a fixed inline diff sequence for the test
...also the first time to get this diff representation draft
through the compiler

TODO: implementation of the actual diff step application functions
2014-12-10 04:33:53 +01:00
01cac65752 WIP: continued drafting of diff representation
Basically attempt to represent the individual diff step
as a tuple of "DiffVerb" and reference element.

The meaning of the reference element depends on the actual verb
2014-12-04 04:41:07 +01:00
f4cb2896b7 WIP: start with drafting the GUI diff representation
...first step is to design a generic linearised list diff representation.
Basically just need to pull together the theoretical work of the last weeks.
Next steps will be to extend to typed ordered trees.
2014-12-01 02:50:46 +01:00
746fba98d5 DSL verb token: move to distinct definition header
concept finished thus far
2014-11-28 12:50:58 +01:00
4fe1f64eb5 Extend the concept to support arbitrary handler signatures 2014-11-28 12:00:47 +01:00
b652fb959f Implementation concept for enum-like "verb" tokens, usable as simple DSL
the intention is to use these tokens as a Diff representation
2014-11-24 05:11:03 +01:00
088e4422fb Test helper to show demangled C++ names
Heureka! found out that the C++ standard library exposes a
cross vendor C++ ABI, which amongst others allows to show
object code names and type-IDs in the language-level, human
readable unmangeld form.

Of course, actual application code should not rely on such a
internal representation, yet it is of tremendous help when
writing and debugging unit tests.

Signed-off-by: Ichthyostega <prg@ichthyostega.de>
2014-11-22 03:31:59 +01:00
639fd224db Lib: helper to deal with malloced memory automatically
basically just a dressed-up std::unique_ptr
2014-11-16 04:26:12 +01:00
7c5a02cdcf Stubbing to make it compile 2014-11-15 03:00:44 +01:00
44603ea96d WIP: DSL verb token implementation draft
the idea ist to build some kind of "smart" enum constants,
which allow for double dispatch through a member function pointer,
invoking a virtual function on a common handler interface
2014-11-13 03:48:01 +01:00
09e7e1f8f5 WIP: pondering diff representation variants
Actually I arried at the conclusion, that the *receiving* of
a diff representation is actually a typical double-dispatch situation.
This leads to the attempt to come up with a specialised visitor
as standard pattern to handle and apply a diff. Obviously,
we do not want the classical GoF-Visitor, but (yes, we had
that discussion allready) -- well in terms of runtime cost,
we have to deal with at least two indirections anyway;
so now I'm exploring the idea to implement one of these
indirections through a functor object, which at the same time
acts as "Tag" in the diff representation language (instead
of using an enum as tag)
2014-11-10 04:00:39 +01:00
41ad41d1f1 clean-up: sourcefile layout and spell checking
Uniform sequence at start of source files
- copyright claim
- license
- file comment
- header guard
- lumiera includes
- library / system includes

Lumiera uses Brittish spelling. Add an according note to the styleguide.
2014-10-23 23:04:35 +02:00
3dccb77245 clean-up: use dashes in filenames 2014-10-23 23:04:33 +02:00
41a711120c planning the access structure to session content
initial considerations; there is a concurrency problem, since
all of session handling within Proc is deliberately not threadsafe.
Thus the decision is to make this the gui::model::SessionFacade's responsibility
2014-10-19 05:54:20 +02:00
2d0671beff reduce the load of some tests
...since they cause out of memory from time to time
2014-10-18 05:09:18 +02:00
e02a9d213d enable special unit-tests to link against the gui 2014-10-18 04:27:07 +02:00
aa17106c41 link tests with stringent application scope dependencies (closes #938)
- the tests covering threadind support and object monitors
  are located in the backend test-library and linked against liblumierabackend.so
- some fundamental facilities of proc-layer moved from the library tree
  into the basic components tree, since *testing* them requires at least
  to link against liblumieracommon.so
2014-10-17 21:15:59 +02:00
7c9ab5fba2 reorganise test suite compartments
this change is prerequisite to allow linking against different scopes (#938)
2014-10-17 20:02:25 +02:00
4e5b1901a1 Solution for #948 : special treatment for the test-suite
Note: this changeset globally sets the linkerflag --as-needed
but adds a single, hard coded exception to this rule for
taget/test-suite
2014-09-30 04:40:24 +02:00
Ichthyostega
9945351ab2 Jessie(#946) & Clang(#928) compatibility: fix too narrow test definition
Clang evaluates expressions in different order. While in GCC, the exception
happens at the begin, in Clang the first terms have been already printed.
2014-09-26 02:36:36 +02:00
Ichthyostega
f1a6fca4cd fix too narrow test definition for IterAdapterSTL_test
here we're iterating hash table based collections, consequently
the order of items retrieved *is* implementation dependent and indeed
differs on different platforms and compilers.
2014-09-26 02:24:01 +02:00
7492e7ffce Fix initialisation order problem, triggered in Clang (#928)
In Clang, static object fields are initialised from top to bottom,
but before any other variables in anoymous namespaces. To the contrary,
GCC evaluates *any* initialisation expression in the translation
unit together from top to bottom. Thus, in the clang generated
code, in two cases the static initialisation could use a not yet
constructed local lib::_Fmt formatter object.
2014-09-25 02:50:02 +02:00
059dbd8c75 fix and finish the diagnostics helper
there was still a subtle bug in this helper.
testing your own test fixture is sometimes a good idea ;-)
2014-09-23 03:37:28 +02:00
4145452397 factor out a diagnostics helper for variadic templates
a nice offspring of this investigation
2014-09-22 03:37:07 +02:00
d064623bab Reworked MultiFact(#388): switch in the new implementation 2014-09-14 23:58:05 +02:00
591e6d9775 MultiFact: implement the last and most complex usage case
the use of a custom finisihing functor, which is applied
to any generated product. This can be used for registration,
memory management or similar framework aspects
2014-09-14 22:25:12 +02:00
932d49fd95 MultiFact: how I learned to love the Bomb
C++11 is just incredibly cool. It is so easy to
support a flexible yet specific set of arguments
2014-09-14 02:06:58 +02:00
372edbfc85 MultiFact: implement second use case (smart pointers) 2014-09-14 00:36:36 +02:00
0ff5c50030 MultiFact: implement simple usage pattern. NOTE: breaks CLang 3.0
Implement the first simple usage scenario for the
unified MultiFact template, using variadic templates.

NOTE:
 - the obvious solution based on std::forward
   triggers strange behaviour in GCC-4.7
 - the inline lambda in the test case traps the
   CLang-3.0 parster with a segfault. Horay!
2014-09-13 02:50:14 +02:00
c209f2e80c WIP: draft first usage pattern of the reworked MultiFact
...this time, I am determined to get it all into a single
template, and get it clear and right.
2014-09-11 19:39:42 +02:00
a1bb9178f5 Ticket #388: start investigation of MultiFact design
needs overhaul, since current design leads to problems
with GCC 4.8 onwards (and is messed up anyway)
2014-09-11 00:10:59 +02:00
d2193e381c CLang-compatibility: temporary fix for bool conversion
...but we really neeed to re-think those bollean evaluations and conversions
2014-08-28 23:28:39 +02:00
d07bbadaaf extend the unit-test to verify usage in hashtables 2014-08-18 06:03:41 +02:00
05042d96cd document the hash bridge with a unit test 2014-08-17 08:39:46 +02:00
e35a45a65e tricky header reordering to support a hackish-workaround (#944)
right now we have to defeat an unfortunate static assertion in
the standard library, which is expected to go away in the future.
We use a hack to hijack the problematic definition with the preprocessor,
which requires our header to be first.
2014-08-17 08:03:21 +02:00
3ef6bb0482 improve readability of some test specs
..by using literal match instead of regular expression match
2014-05-12 01:37:15 +02:00
561e036e0b remove any remaining use of boost::lambda
obsolete now, we can use the lambdas of the stock language
2014-05-12 01:12:45 +02:00
c2ea15695e amend harmless PlacementIndex test failures. Test Suite PASS
c++11 uses another hashtable implementation.
This uncovered some poorly written tests, which relied on
objects being returned in a specific order. As far as poissible,
we're using generic query functions now to get our test objects.

But these tests still rely on a specifically crafted test index content,
which as such is acceptable IMHO. The only remaining problem is
that we check the order of generated output in some tests, and this
order is still implementation dependent.
2014-05-11 02:08:53 +02:00
a421cf45de adjust test spec: C++11 does indeed pass ref parameters even through function objects
This is a notable difference to the boost or tr1-function objects
we used up to now. Thus the behavour is now straight forward without
any exception. If the function takes an argument by reference,
this is replicated through bind and function expressions
2014-05-10 02:14:38 +02:00
4acb7de682 half hearted fix: order of hashmap entries is implementation dependent
a real fix would be to rewrite the test to collect the retrieved
values and do a structural verification of the results. This
would mean to write a lot of code for such a marginal topic,
which was implemented just for sake of completenes anyway.

Hopefully my lack of "motivation" doesn't backfire eventually ;-)
2014-05-09 01:45:10 +02:00
a205653cad C++ uses a more precise meaning of 'convertiblity' now
Conversion means automatic conversion. In our case,
what we need ist the ability to *construct* a bool from
our (function) object -- while functors aren't automatically
convertible to bool. Thus we use one of the new predicates
from <type_traits>
2014-05-09 00:56:31 +02:00
643dfe3ea8 fix long standing error in testsuite runner
...uncovered by switching to c++11
When invoking an individual test, we used to erase
the 0-th cmdline argument, which happens to be allways
the name of the test being invoked. Yet none of our
tests actually complied to that contract. Rather,
all tests taking arguments access them by 1-based
argument index. Previously, the argument values just
happened to be still in memory at the original location
after erasing the 0st element.

"Fixed" that by changing the contract. Now, the 0th argument
remains in place, but when there are no additional arguments,
the whole cmdline is cleared.
This is messy, but the test runer needs to be rewritten
entirely, the whole API is clumsy and dangerous. Ticket #289
2014-05-09 00:56:31 +02:00
a4c41d1c12 testrunner: handle help request properly
don't actually execute the tests when there was a --help
2014-05-05 22:59:23 +02:00
f826ab1ee5 C++11 transition: get compilation to pass again
...but we have still 12 test failures
2014-04-28 01:34:03 +02:00
2e9467fe76 Ticket #942: introduce move semantics for our custom shared-ptr-wrapper lib::P 2014-04-28 01:06:40 +02:00
761bab5647 C++11 transition fixes
- comparison of weak-pointers
2014-04-05 22:20:38 +02:00
7be1b7d35d Switch from TR1 preveiw to the new standard headers
- functional
- memory
- unordered collections
2014-04-03 22:42:48 +02:00
5be52d4a55 Ticket #925: remove LUID from interface/plugin specifications
In the November developer meeting, Christian and I agreed that
it's best to remove that offending LUID specifications altogether.

Those embedded LUIDs where one of the issues blocking the transition to C++11
2014-03-16 02:21:07 +01:00
5fa4667fb8 fix error in test fixture
random offset should always be != zero
2014-03-16 02:00:01 +01:00
4ef1883c04 settle and implement some long standing concerns regarding #920
- what the dispatch operation actally is
- where the deadlines are established
2013-11-18 02:25:27 +01:00
a640283e4c introduce typedef for Frame numbers (see #882) 2013-11-18 00:01:43 +01:00
608ae3efd8 continue development where we left before the release effort 2013-11-17 23:05:15 +01:00
62ae422fcc bugfix: occasional wrap-around on 32bit FSecs value in test code
this is rather a workaround.
The problem is a wraparound while calculating the common denominator in

Time rawTime (dirt + frames*F25);

Currently we're using boost_rational<long>, and long is only 32bit
on 32bit platforms. The workaround commited here just avoids
the calculation of the fractional value, and adds 64bit time values
instead. But the real solution would be to use a consistent
approach for dealing with frame counts and frame rates, all
based on 64bit values. See Ticket #939
2013-11-10 04:17:53 +01:00
4da923696b partial fix: use 64 framecounts (Ticket #882)
This is a partial and preliminary fix; we had an occasional
numeric overflow on 32bit platforms in some tests.

The complete fix will be to introduce a typedef and then
rework the relevant APIs (which are preliminary anyway,
thus no urge right now)
2013-11-10 04:14:39 +01:00
3ffc27eee0 bugfix: format-string for long and ulong values
our front-end for boost::format, the class lib::_Fmt
was lacking an reliable  specialisation for long and ulong.

This is due to the notorious problem of these types being
of platform dependant size. As a fix, we're speclialising
explicitly for int16_t, int32_t and int64_t and avoid the
common names 'short', 'int' and 'long' alltogether.

And especially for non-64bit-platform (NONPORTABLE)
we add an explicit specialisation for long
2013-11-10 04:14:22 +01:00
8defe47507 Debian/Policy 3.9.x : enforce strict dependencies on dynamic modules
The recommendation is to use the link flag --no-undefined
and to fed *all* dependencies to the respective link step.

This changeset enables this strict linking of dependencies.
It turned out that our dependencies were already sane
(with the sole exception of a direct dependency to X-Lib
in the XV viewer widget)
2013-11-03 00:07:17 +01:00
888099466f release prep: remove defunct autotools buildsystem 2013-10-29 03:47:50 +01:00
6822a9e2fb DOC: reorganise the Doxygen configuration and structure
- upgrade the configuration to a current version
- provide a frontpage with cross-links to other documentation
- define a set of modules; relevant classes and files can be
  added to these, to create a exploration path for new readers
- fix a lot of errors in documentation comments
- use a custom configuration for the documentation pages
- tweak the navigation, the sections and further arrangements
2013-10-25 06:34:38 +02:00
974c670d41 fix **** in doxygen comments
to make them stand out more prominently, some entity comments
where started with a line of starts. Unfortunately, doxygen
(and javadoc) only recogise comments which are started exactly
with /**

This caused quite some comments to be ignored by doxygen.
Credits to Hendrik Boom for spotting this problem!

A workaround is to end the line of stars with *//**
2013-10-24 23:06:36 +02:00
d0f195d8c2 remove superfluous shutdown of config-system
...startup and shutdown happen automatically through ConfigFacade.
2013-10-21 03:03:16 +02:00
52c83b860b DependencyFactory: remove the ability to restart a service explicitly
We don't need this ability and it pushes us into using a
central registry. This solution turned out to be problematic
when loading dynamic libraries (plug-ins).
2013-10-21 02:06:01 +02:00
a344604f1b Clang(#928): adjustments regarding scope and visibility
Clang doesn't allow to declare a private nested class as friend.
This is unfortunate, but likely correct to the letter of the standard.

As a workaround, now we're creating the instances within a static
function of DependencyFactory -- in the end this improves readability


A second issue fixed with this changeset is the scope of the
marker function. Clang is right, this isn't ADL, thus an inline
friend definition is simply not visible outside the class.
2013-10-20 21:51:28 +02:00
bfba22f41a move test mock support into separate header. Write comments (closes #934) 2013-10-20 03:48:23 +02:00
0ea37402d2 Ticket #934: switch entire code-base to use the new Singleton factory
lib::Depend<TY>  works as drop-in replacement for lib::Singleton<TY>

This changeset removes the convoluted special cases like
SingletonSub and MockInjector.
2013-10-20 03:19:36 +02:00
b225120d09 reworkted Singleton / DependencyFactory unit test pass 2013-10-20 00:34:21 +02:00
739a473f7e implemented the standard code path of DependencyFactory
still mising: a mechanism to inject mock objects temporarily
2013-10-19 03:32:49 +02:00
78c7036678 reshape the management interface
now using static functions; which simplifies building
a scoped object to install a mock automatically within
unit tests.
2013-10-18 20:15:29 +02:00
7000a40602 WIP: stubbed factory functions 2013-10-18 02:49:37 +02:00
319da4bff6 WIP: improve the API 2013-10-18 01:10:03 +02:00
f93c7f8930 WIP: draft internal structure of dependency factory 2013-10-16 04:46:20 +02:00
567ab3819b WIP: draft an improved version of the Singleton factory
...this would both improve our general design and circumvent
the problems with Clang and static variables
2013-10-14 01:18:56 +02:00
843d75ac2a test.sh: double VSize limits to prevent frequent test suite failure
especially the DiagnosticContext_test seemst to hit the
previously set limits regularily, which is somewhat strange
2013-10-13 02:50:04 +02:00
f136220131 Clang(#928): fix re-entrance error in testcode
Clang seems to evaluate the terms of a function call in another order
than GCC -- this uncovered re-entrance errors in some metaprogramming tests,
where we re-used a global formatter object in recursive instantiations.
2013-09-28 01:16:22 +02:00
cb80d4001a Clang(#928): refactor OutputSlot implementation to resolve a scoping problem
Clang is more insistent when it comes to enforcing 'protected' visibility.
Since in this case the basic design can be considered sane and optimal, the
only (and obvious) solution is to nest the PIMPL into a default base class
for implementation; this mirrors the structure of the interface.
2013-09-27 23:25:51 +02:00
4ea20f0e74 Clang(#928): fix inconsistencies and compilation problems
Compilation with Clang 3.0 (which is available in Debian/stable) fails,
mostly due to some scoping and naming inconsistencies which weren't detected
by GCC. At some instances, Clang seems to have problems to figure out a
perfectly valid type definition; these can be resolved by more explicit
typing (which is preferrable anyway)
2013-09-27 23:23:13 +02:00
7f68bc9020 integrate priority queue: lumiera namespace prefix; unit test pass 2013-09-13 05:44:58 +02:00
fc3cc1bc98 integrate priority queue: adjust imports and doxygen comments 2013-09-13 04:18:16 +02:00
2b8ac2d071 render job dummy passes unit test
the basic job and job closure interface is mostly settled now.
We can define and invoke render jobs, and distinguish jobs
through a hash ID
2013-09-07 02:37:17 +02:00
7ba10619aa draft unit test to cover the basic render job properties 2013-09-02 00:57:33 +02:00
ef535d9897 provide a dummy job for unit testing 2013-09-02 00:26:04 +02:00
7ba0ef92c8 stubs to complete the scheduler interface draft 2013-09-01 23:29:57 +02:00
3688cbe9a5 WIP: draft scheduler interface and diagnostics 2013-09-01 19:48:17 +02:00
bcbd05d7eb reorganise some boost::format usage
using our util::_Fmt front-end helps to reduce the code size,
since all usages rely on a single inclusion of boost::format

including boost::format via header can cause quite some code bloat


NOTE: partial solution, still some further includes to reorganise
2013-09-01 17:36:05 +02:00
febce1282c standard hash value for jobs (prerequisite for #786)
this is mostly a diagnostic facility; the actual scheduling
of jobs doesn't rely on hash values.
2013-09-01 02:30:14 +02:00
3932a820a3 Job and JobClosure now located in the backend
- adjust namespaces
- fix imports
- forward the failure reason to the JobClosure implementation
2013-08-30 02:00:35 +02:00
488efdf783 WIP: relocate job descriptor into backend (Ticket #926) 2013-08-30 01:23:07 +02:00
ecf65a70fb start a draft to shape the high-level interface for the Scheduler 2013-08-19 04:12:03 +02:00
f9cd80560c complilation fixes 2013-08-18 03:16:49 +02:00
77066ee3ce WIP: how to start the actual calculation streams within EngineService
this draft fills in the structure how to get from an invocation
of the engine service to the starting of actual CalcStream instances.

Basically the EngineService implementation is repsonsile to
instruct the Segmentation to provide a suitable Dispatcher.
2013-06-03 05:25:13 +02:00
723096d3f2 WIP introduce a new kind of job closure to perform the planning
this might help solving that gordian knot related to the TimeAnchor,
the Dispatcher and the introduction of a possible playback strategy
2013-06-02 03:09:18 +02:00
56be672358 WIP: reworking the dispatcher interface
the goal is still how to introduce a playback strategy
2013-05-30 02:10:56 +02:00
d512267575 navigation orientation indicator done (closes #918) 2013-04-30 02:40:21 +02:00
e0c5b18740 draft indicator (helper) to support tree navigation 2013-04-29 01:36:32 +02:00
3a4198b2bc clean up and comment test (hierarchy rebuilding through visitation) 2013-04-15 03:48:12 +02:00
d953d4e6af Library: convenience function to take addresses
just a wrapper based on 5749a621

While implementing this, also simplified the way
a const iterator can be defined for taking addresses
2013-04-15 03:07:15 +02:00
642f2e0e89 Test now working (re-creation of tree structure)
...this was quite insidious, but most of the problems
were in the test fixture. Treating the root context
on re-creation is something to be carefull though
2013-04-14 03:21:59 +02:00
346acb1fec WIP continue debugging this test...
Problem with the visitation is solved now.
But the tree is still not rebuilt properly
2013-04-13 04:30:04 +02:00
e610384376 WIP: further reworking the test fixture
While this isn't immediately relevant to the problem at hand,
it looks like a sensible idea to be able to explore
an existing data structure by iterators exposing pointers
(instead of reference wrappers).

Generally speaking, reference wrappers would be preferrable,
but, especially when the data structure relies on STL containers,
the default constructed values for resizing rule out
the standard reference wrapper, which can't be default
constructed. Using a custom variant would be equivalent
to using just a plain pointer (since both can be NULL and can be rebound)
2013-04-08 02:37:14 +02:00
5749a6216c Library: iterator wrapper to expose the address
...for the very specific situation when we want
to explore an existing data structure, and the
exploration assumes value semantics.
The workaround then is to use pointers as values.
2013-04-08 02:03:43 +02:00
4a7b4b0a8d WIP reshape test fixture to get a better call structure
This test setup is intended to emulate the situation
when adding jobs to the scheduler; thus we should use
an implicit sequence as root element.
I.e. we have to treat a wood, not a single tree

Note: test still fails, since we take a copy
of a Node object somewhere inadvertently
2013-04-07 01:33:29 +02:00
8f62b2de73 WIP experiments cont
finding out how adding dependant jobs could be done
2013-04-02 01:38:51 +02:00
8353ebf7d2 WIP drafting cointinued...
now drafting the call structure
which might be used for adding jobs
to the scheduler.

Passes compiler
2013-03-31 01:13:13 +01:00
a559b38656 WIP continue drafting this test
- finish test data structure
- draft how to rebuild the structure within the test
2013-03-23 22:44:19 +01:00
4c312e2299 WIP reworked idea for this test
...attempt to build it based on the monadic iterator primitives.
Only problem is: need to find out relation between nodes
after the fact. In the real usage situation, this
is not a problem, since we have a state object
there, which can track the relation as it is established
2013-03-23 01:17:23 +01:00
16c9f5fd36 WIP musing about re-creation of tree visitation order 2013-03-17 03:14:05 +01:00
d8d4db3544 fix border case in test definition
there was the possibility for the random offset added in this test
to add up to a whole frame, which would cause the
re-quantisation to wrap to the next fame (and thus the
CHECK in line 110 to fail.
2013-02-13 04:53:15 +01:00
7ada9ff291 consider how to integrate a playback mode strategy 2013-02-11 03:19:24 +01:00
4ec7c11275 complete dispatcher test-case and interface definition
DispatcherInterface_test now passes the compiler,
meaning that the interfaces are completely defined,
all the generated types are OK and all operations are
at least stubbed.

Replacing all those stubs will be the next step
2013-01-13 18:09:18 +01:00
727fdd8691 add convenience shortcut to access a collection's last element
actually two accessor functinons first() and last(),
which automatically pick a proper implementation,
either by iteration or by direct access
2013-01-13 16:49:20 +01:00
a4411d00b1 DONE: time anchor and latency handling for job planning 2013-01-12 12:38:33 +01:00
18605b0c19 handling of real time start offset
decision: the base for any deadline calculations
is the expected real time corresponding to the grid origin.
This value is contained in the Timings record.
2013-01-12 08:36:35 +01:00
72e5557d1e locate the real time / nominal within engine::TimeAnchor
this clarifies the relation of TimeAnchor and Timings,
the latter act as a general spec and abstracted grid,
while the latter actually performs the conversion and
deadline checking
2013-01-11 18:12:40 +01:00
ada5cefaaf re-arrange tests according to layer structure
the buildsystem will now pick up and link
all test cases according to the layer, e.g.
backend tests will automatically be linked
against the backend + library solely.
2013-01-07 05:43:01 +01:00
8d88ffcdff SCons: rework test definition to link according to layer
tests used to be defined ad hoc and test definitions
are scattered confusingly over various directories.
Now built some simple rules into the buildsystem
to allow organising the tests into layers and
linking them accordingly.

Note: this switches to building shared objects
for the test classes too, which effectively speeds up
both re-building and re-running of test cases
2013-01-07 02:15:05 +01:00
6a3d4777be supplement special format handling for Symbol datatype 2012-12-27 22:32:55 +01:00
7e7d5793e1 fix another test 2012-12-27 21:53:26 +01:00
a1d98eb457 restore and fix some broken tests
..more to come, especially several of the
QueryResolver based tests are still broken
2012-12-27 03:31:09 +01:00
384ee68129 allow simple query-for-pipe again (revert)
while refactoring, I thought it might be a good idea
only to use Query objects. But in this special case,
most often you'd just want to pass in a simple query
with a literal query string. So this convenience shortcut
indeed makes sense.
2012-12-26 02:20:11 +01:00
873d6c3d5c re-activate some tests 2012-12-26 02:01:26 +01:00
d73c2fa842 adapt the fake-config-rules to use the new Query::Builder 2012-12-25 01:16:19 +01:00
9369709a46 fix breakage uncovered by unit-test 2012-12-24 03:20:52 +01:00
bccb7a11b5 restore defs-registry Unit test 2012-12-22 22:01:51 +01:00
5b2668a17c generic query representation (placeholder)
...planned to be replaced later by a real
AST based implementation, which acutally
parses the query definitions
2012-12-03 00:41:57 +01:00
d306bb3cdf fix includes 2012-12-03 00:18:18 +01:00
a79ba2c507 refactor use of HashVal typedef (#722) 2012-12-02 23:03:37 +01:00
5292b19dd6 clean-up and finalise time::Mutation 2012-12-02 01:54:02 +01:00
5dfe5e099f refactor namespaces for query and defaults manager 2012-12-01 08:44:07 +01:00
dd8a88d095 adjustments and stubbing to get it past the compiler 2012-11-26 01:22:01 +01:00
b5a7055f29 move Query interface to Lib 2012-11-25 02:29:52 +01:00
62bfccd67b cleanup: remove the old factory template
This template was a leftover from the early days
of Lumiera development and doesn't provide any
substantial value as an abstraction.

For the more intricate cases, we're using the
lib::MultiFact template, which allows to install
several "fabrication" functions at runtime
2012-10-14 01:30:08 +02:00
44435fd1db clarify and settle the relation between Dispatcher and PlanningStepGenerator
the solution is to introduce a superinterface
and let Dispatcher augment that with the specific parts.
This way, the Job planning only has to rely on the
rather generic stuff (TimeAnchor, FrameCoord)

NOTE: this commit makes the whole JobPlanning machinery
compilable for the first time!
2012-10-10 05:20:23 +02:00
88f433f433 successfully implemented another combinator strategy
DOH!
this thime hopefully I've actually succeedd to
created what is actually required in the Dispatcher
2012-10-10 05:20:20 +02:00
016a739a5c WIP back to the original problem: how to dispatch jobs...
brainstorming how to implement the job planning stage

the idea is to built on top of the IterExplorer,
but have the "stack" of re-evaluation integrated
into a custom type, which exploits the static
node network structure to avoid heap allocations

solution idea: again use a builder function?
2012-10-10 05:20:20 +02:00
e76b85fcfa fix test broken by #410 2012-10-10 05:20:19 +02:00
e6a105fbc1 iterator exploring monad finished, passes unit test 2012-10-10 05:20:19 +02:00
3d0d599158 get the depth-first exploration test to work
...using the IterQueue for intermediary results
2012-10-10 05:20:18 +02:00
2c33000346 complement IterStack by a similar wrapper for queue-like access 2012-10-10 05:20:18 +02:00
8ced6758fb initial draft for recursive evaluating iterator monad
tricky design problem, because nothing is known about
the source and result sequences to be built.
2012-10-10 05:20:18 +02:00
41180eb99c rework to allow for recursive evaluation
this enables expansion of a (functional) data structure
until exhaustion -- which is what we need to
build job functors by traversing and expanding
an arbitrarily nested job definition structure
2012-10-10 05:20:17 +02:00
75df583607 raw version of ChainedIter passes unit test 2012-10-10 05:20:17 +02:00
8db5413199 implemented chained-iterators
...using the IterExplorer building blocks
2012-10-10 05:20:17 +02:00
d14b37a71d utility class factored out and covered by test
...a stack which can be Lumiera-iterated
2012-10-10 05:20:16 +02:00
da4a343e9e refactor IterExplorer to allow for more flexible strategy definition 2012-10-10 05:20:16 +02:00
dc3ebd4a8f first working concept for an "iterator monad"
the intention is to use this to simplify
generating render jobs based on the elaborated
dependency network of the render nodes. The key
challenge is to overcome the necessity to
store partially done evaluations as
continuation
2012-10-10 05:20:16 +02:00
3a7db1603e add test for the base case 2012-10-10 05:20:16 +02:00
eedcd69941 draft the IterExplorer design
the tricky part seems to be how to combine the
source iterators into a new monad instance, while
keeping this "Combinator" Strategy configurable

...just passes the compiler, while still lacking
even the generic implementation of joining
together the source iterators
2012-10-10 05:20:16 +02:00
45f4c96c6f change LinkedElements to us a more space efficient iterator
Actually we don't need any backreference to the
container for iterating a singly linked list
2012-10-10 05:20:15 +02:00
378ebe21f0 Fix naming of Iteration control API functions (closes #410)
comes in handy now, since IterStateWrapper uses a similar API
2012-10-10 05:20:15 +02:00
83a0f4b41f Implementation (I) : IterStateWrapper as foundation (passing test) 2012-10-10 05:20:15 +02:00
ab2a6b2fce WIP brainstorming about a monadic iterator
The idea is to avoid building a data structure
for intermediary results, while still being able
to process a variably sized and arbitrary shaped
set of source data
2012-10-10 05:20:15 +02:00
3ef1fb7697 linked list helper template finished and passes test 2012-10-10 05:20:14 +02:00
c33fcf9797 WIP draft a linked list helper template 2012-10-10 05:20:14 +02:00
ddff8b654b WIP investigating the relation of Jobs, JobTicket and Closure in detail 2012-10-10 05:20:14 +02:00
0320bc4b2c considering the relation of Job and JobClosure 2012-10-10 05:20:13 +02:00
bb43c03ef9 stub all the job generating functions required for the dispatcher interface 2012-10-10 05:20:13 +02:00
0ab773ab7c helper to pull all elements from an iterator, yielding the last one 2012-10-10 05:20:13 +02:00
79bd8b71e3 better treat the building of a continuation job separately 2012-10-10 05:20:13 +02:00
08d266819d re-read my own code and pick up the design work
..next question is: how to shape the dispatcher interface,
in order to support ongoing chunk wise planning
of new jobs, including a continuation
2012-10-10 05:20:13 +02:00
9aec2a9806 allow for fractional scaling of time durations
implemented as extension to the linear combinations.
I decided to use the same "always floor" rule
as employed for time quantisation. Moreover,
we don't support floating point, only rationals
2012-10-10 05:20:12 +02:00
22322dfec4 refactor the division/quantisation helpers
...no need to keep them in util.hpp, as they
are used rather occasionally, while util.hpp
is used pervasively.
2012-10-10 05:20:12 +02:00
ee1450a81a rectify frame dispatch invocation 2012-10-10 05:20:12 +02:00
f8f011bb44 rework Job representation
make class Job a real subclass of the
job definition struct and turn the
JobClosure into a trampoline
2012-10-10 05:20:12 +02:00
0b25c2e08d Fix: missing sanity check in ScopedCollection
funny enough this possible memory corruption
didn't happen in the unit test, because my
compiler optimised the additional int field
of class SubDummy, making it the same size
of the baseclass. Now matters should be safe.
2012-10-10 05:20:12 +02:00
1e54b5d3e6 stubbing some job functions 2012-10-10 05:20:11 +02:00
db68577b4a clarify relation of Job, JobTicket and channel number 2012-10-10 05:20:11 +02:00
e9dbb3bdb1 stubs for some important components of play/engine (JobTicket...)
also touches the question how to represent the job
descriptor datastructure. @Cehteh: I've just pasted
in your preliminary data struct definitinons
from the relevant mailing list discussions.
2012-10-10 05:20:11 +02:00
568fadd526 draft some steps of the dispatch operation 2012-10-10 05:20:10 +02:00
6772e94994 implement simple constant frame timings descriptor 2012-10-10 05:20:10 +02:00
157e3b6867 test-driven brainstorming: define default timings... 2012-10-10 05:20:10 +02:00
2cb254365c some musing about timing constraints and quantisation 2012-10-10 05:20:10 +02:00
a4e3383367 turn Dispatcher into an interface 2012-10-10 05:20:09 +02:00
3768791c76 considerations how to connect exit nodes to external outputs 2012-10-10 05:18:58 +02:00
288b737718 dummy playback: stub the required operations 2012-10-10 05:18:58 +02:00
2eb39704fc test-driven brainstorming: how to use the dummy playback?
this is an idea how to test a test setup :)
2012-10-10 05:18:58 +02:00
7e7ecc5d51 draft: integrating an engine mock implementation 2012-10-10 05:18:58 +02:00
a2bcedc31e some unrelated unit test tweaks 2012-10-10 05:18:57 +02:00
d2f83523ca join recent player subsystem work, SCons overhaul and documentation 2012-01-11 07:54:43 +01:00
98717915b2 clean up top level SConstruct 2012-01-11 07:05:01 +01:00
f84da63e11 use import/export instead of passing an artefacts map 2012-01-11 07:05:00 +01:00
f5290a99a3 OutputSlot : simulated usage protocol passes unit test
OutputSlotProtocol_test

Some parts are still missing
 - timings
 _ initialisation
2012-01-08 03:06:32 +01:00
24a1060ae9 fix inconsistency in OutputSlot protocol test
need to distinguish between nominal frame number
and the sequence number in the output frame stream
2012-01-08 01:32:45 +01:00
d732e7e211 Lumiera Forward Iterators: remove support for post-increment 2012-01-08 01:14:36 +01:00
8de4ecc8ac add diagnostic messages showing each connection access
currently the problem seems to be we're
accessing the wrong connection...
2012-01-07 21:22:35 +01:00
73cfef69c8 fix some problems with OutputSlotProtocol_test
still WIP...
 - there is a logical contradiction with the frame numbers
 - somehow, in diagnostics, we access the wrong sequence instance
2012-01-07 06:40:21 +01:00
5cc034d26b refactor ScopedCollection to use an init() function 2012-01-07 04:44:48 +01:00
e6888f7b83 supplement direct support for populating by member function
this turns out to be the typical usage scenario
for ScopedCollection: a manager object owning
the collection will populate it with specially
crafted components and invoke a member function
for creating the individual components.

This shortcut avoids using tr1::bind alltogether
2012-01-07 04:11:39 +01:00
feff7537ef reduce memory requirements for this test
...it caused out of memory frequently.
2012-01-07 03:27:31 +01:00
b64dff1ad8 spelling and comments 2012-01-07 00:02:03 +01:00
e41065101a switch OutputSlot to use the ScopedCollection
..hehe, makes the code way more sane
2012-01-06 03:16:22 +01:00
e5c42e05e6 finish ScopedCollection (closes #877) 2012-01-05 23:17:16 +01:00
72e8d22454 implement the RAII-style collection ctor. test pass 2012-01-05 03:40:04 +01:00
434a371c33 take ctor args by value; test attaching sub-types passes 2012-01-04 04:28:14 +01:00
690304f9bc get the simple and iteration unit tests to pass 2012-01-04 04:05:03 +01:00
57741a94d9 fix random init error (division by zero possible) 2012-01-04 03:30:34 +01:00
fa5e7db2d3 WIP rewrite iteration-control logic... 2012-01-03 02:50:22 +01:00
6c01579a26 WIP draft implementation of ScopedCollection 2012-01-02 06:11:27 +01:00
e63fa6d646 Test-driven brainstorming: draft a ScopedCollection #877 2012-01-01 06:20:42 +01:00
06c7c27252 merge diagnostic facilities 2011-12-31 06:49:31 +01:00
37384f1b68 formatting wrapper/frontend: unit test pass.
Closes #166
2011-12-31 06:48:26 +01:00
e1b9b5b135 rewrite type selection logic to handle ptrs in the front-end
whew, quite a heavy rewrite, but greatly
simplifies the code and removes the necessity
to declare explicit specialisations of pointers
2011-12-31 06:48:11 +01:00
c8f46f47c9 handling of ptrs, first attempt 2011-12-31 06:47:58 +01:00
35ed2dcf5c add more robust error handling
...incl handling of secondary errors
2011-12-31 06:47:38 +01:00
e838fb9799 document and cover various formatting special cases 2011-12-31 06:47:30 +01:00
0d136e2703 define explicit specialisations for primitive types 2011-12-31 06:47:03 +01:00
e054c272b6 research: detecting the possibility of a string conversion
find out about the corner cases of this
simplistic implementation
2011-12-31 06:46:50 +01:00
7efff377d0 use separate test group for metaprogramming tests 2011-12-31 06:46:43 +01:00
6c95c1b0e4 format-frontend: fill in missing bits of the implementation 2011-12-28 06:42:30 +01:00
545d9ea82b WIP draft frontend for diagnostic output (#166) 2011-12-27 07:45:07 +01:00
89928bc447 refactor format-util: simplify picking the right specialisation 2011-12-27 07:44:59 +01:00
50885a065b move asside lib/format.hpp
...to make room for a new more specialised header
2011-12-27 07:44:49 +01:00
a3b7305b2b reduce number of threads for some tests
they tend to fail when running under builddrone
2011-12-27 07:44:36 +01:00
24a8d6a926 generalised diagnostic context passes unit test 2011-12-24 05:57:28 +01:00
5498ace9fc WIP define a unit-test for diagnostic context stack 2011-12-24 05:57:11 +01:00
87f7a8f6e8 unit test to cover thread-local helper 2011-12-24 05:55:31 +01:00
451b0abec5 spelling and typos 2011-12-24 05:48:31 +01:00
d27e3b15a9 clarify the handling of specific output operation modes (e.g. number of channels) 2011-12-23 02:22:38 +01:00
7fc8473337 fix some size_t printf specs (32/64bit problem) 2011-12-19 03:02:48 +01:00
6852a6feff WIP refactor building of the active render feeds
RenderConfigurator becomes an internal strategy
controlled by the PlayService
2011-12-17 04:45:42 +01:00
477b443191 implement diagnostic OutputSlot simple frame tracking
...should be enough to run tests against the OutputSlot interface
2011-12-09 01:03:02 +01:00
aef3d50ffd implement basics of the diagnostic OutputSlot
...specific diagnostic facilities still lacking
2011-12-08 23:02:19 +01:00
08d330310f cleanup unnecessary builder function and flags in SCons build 2011-12-03 05:46:36 +01:00
77548e74c6 document a weakness of boost::hash for strings 2011-12-03 03:18:03 +01:00
7fd28e23eb cleanup configflags to use uint instead of char
using char for those flag template parameters
was never a good idea. It won't save us any space
and makes debugging harder
2011-12-03 03:16:08 +01:00
d9f84a9bfd clean up lib/meta namespaces 2011-12-03 03:15:59 +01:00
b2d6074097 cleanup test includes 2011-12-02 21:34:29 +01:00
b9d1899486 cleanup: rectify Proc-Layer namespaces (II) 2011-12-02 17:50:44 +01:00
eb79a00cf4 cleanup: rectify Proc-Layer namespaces (I) 2011-12-02 16:10:03 +01:00
89a9202c6c cleanup: remove precompiled headers
we don't need them and they even tend to
increase build times due to unnecessary
compound-includes at some core headers
2011-12-01 23:32:34 +01:00
c7d4412cec integrate recent GUI / timeline and work done on the player subsystem 2011-11-27 02:15:11 +01:00
7ba8ff432f BufferProvider interface finished thus far.
simulated lifecycle passes unit test
2011-11-26 00:09:59 +01:00
2fce2b1c8d make ctor-tracking test::Dummy more widely usable 2011-11-25 22:05:12 +01:00
55a77bdd73 factor out and treat the attaching of objects separately
this is an advanced feature not required
in the standard buffer usage cycle
2011-11-25 20:23:31 +01:00
eed6d8cd1e split out obsolete ChannelDescriptor for later refactoring
Meanwhile, BuffHanle became way more concrete,
making the separation of any kind of buffer or channel
type management concievable.

Thus: extract the obsolete ChannelDescriptor
and use switch at any location where the old
(superseeded) buffer handle is still referred
2011-11-25 17:16:33 +01:00
74702ebecd address the next test... 2011-11-24 03:33:23 +01:00
2ae1e3c8f9 test/dummy buffer provider finished and passes test 2011-11-21 03:26:08 +01:00
0a1256f4e3 cover and verify detaching from ScopedPtrVect 2011-11-19 21:41:50 +01:00
ca689ae5e0 WIP some musing about building an option monad 2011-11-18 01:24:43 +01:00
27449c1438 implementation details of a test/dummy provider 2011-11-18 01:23:50 +01:00
623bb401af clarify implementation extension points of BufferProvider
decide especially how to pass on the implementation
defined data like e.g. pointers to storage extents
2011-11-15 04:47:31 +01:00
fd94367b9e stubs and changes to make the test compile 2011-11-11 23:33:59 +01:00
fe1ae51b49 WIP draft test for internal test buffer provider
a test to cover a helper for writing tests ;-)
2011-11-11 01:44:01 +01:00
f75e55a060 nail down a lot of OutputSlot implementation details 2011-11-08 02:59:56 +01:00
59dfb7c660 start drafting a (dummy) output slot implementation
this implicates a first attempt to build a
dummy buffer provider implementation.
Mostly just defining stubs here....
2011-11-07 01:57:33 +01:00
7ab7c8073d remold OutputSlot implementation structure
Better solution where to place the extension points
to be implemented by concrete output systems
2011-11-06 02:37:22 +01:00
63dbc89b6f draft implementation setup for OutputSlot baseclass 2011-11-05 16:51:24 +01:00
d6e88c85e0 finish buffer metadata; cover state transitions
BufferMetadata complete and working for now
2011-11-02 01:34:05 +01:00
0cd7bd2b4c add test coverage for the test frame table 2011-11-01 03:36:35 +01:00
db3ea6638d use boost::random to ensure distinct test frame contents 2011-11-01 03:11:43 +01:00
20777cca8a implemented testframe, not passing all tests yet 2011-10-31 02:20:32 +01:00