Commit graph

921 commits

Author SHA1 Message Date
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
3852c8f8e8 provide a time mutation for nudging based on symbolic grid reference
time handling is part of the library, while this
convenience shortcut relies on the Advice system,
which resides in the application lib.
To allow this kind of symbolic acces to a grid
entity defined "elesewhere", client code needs
to be linked against liblumieracore.so
2012-12-02 01:17:02 +01:00
5dfe5e099f refactor namespaces for query and defaults manager 2012-12-01 08:44:07 +01:00
8ee8eb1e73 create a new integration point for using application services
especially this allows to use the Advice system
or the query resolvers from within library facilities
to refer to other implementation level services by name
2012-12-01 07:46:49 +01:00
626b1d4356 re-arrange query- rules- and resolver facilities within Core
the rules-based configuration and query system
will be located within the core application,
while the concrete implementation facilities
are expected to reside within the session or
maybe also the GUI.

This is kind of a 'rochade' refactoring to resolve
circular library dependencies and confine the parts
dependant on the session and MObjects to the Proc-Layer

And while we're in the middle of chainsaw surgery,
we'll concentrate further query-based facilities
alongside the config-rules within the App core.
2012-11-27 02:17:21 +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
baefd74ae7 prepare refactoring of the Query interface 2012-11-25 02:04:19 +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
Michael Fisher
f7a7c1c416 GCC 4.7 compilation fixes. Now builds on debian wheezy beta2 2012-10-10 05:29:54 +02:00
Michael Fisher
e267e0ad0b GCC 4.7 compilation fixes
clarify binding of function (by specifying 'this')
2012-10-10 05:25:42 +02:00
30cf0b5718 implementation of JobTicket::ExplorationState 2012-10-10 05:20:22 +02:00
062e1bbdc1 explicate the JobPlanningSequence definition
..causing the compiler to instantiate the
involved templates, i.e. get the complete
pipeline definition through the compiler
2012-10-10 05:20:22 +02:00
66defdc0cb refactor JobPlanning to encapsulate all state mechanics into a "state core"
especially the exploration stack is pushed down
first successful definition of all the JobPlanning classes

just the framework of classes necessary to pass the compiler;
all implementation is still stubbed
2012-10-10 05:20:21 +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
e073d05f58 new header to define some class partially noncopyable 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
0e3821abeb refatcor function meta programming headers
the template _Fun started as an internal helper
for function-closure, but seems to be of
general use. Thus move it into meta/function.hpp
(function-closure.hpp is heavyweight)
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
59c5627bbe change Implementation class for IterStack
now using a std::deque directly; this allows
for a later extension for queue-like behaviour
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
697924925c pragmatic fix for the long-standing problem of detecting increment operator
our duck-detector had a shortcoming here and failed
to detect iterators, in case the increment operator
was inherited from a mix-in
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
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
0ab773ab7c helper to pull all elements from an iterator, yielding the last one 2012-10-10 05:20:13 +02:00
5222384f8b try to circumvent ambiguity in overload resolution
we want to support various integral and rational factors
for linear chaining of time offsets
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
080d6913c6 fix a type converison problem
...better state explicitly we're requiring
a rational factor
2012-10-10 05:20:12 +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
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
2cb254365c some musing about timing constraints and quantisation 2012-10-10 05:20:10 +02:00
ec659b7141 a better way to inject the Render-Engine Mock
instead of (ab)using the Timings spect for a
runtime switch, better use the existing
MockInjector facility and thus turn the
mock engine mode into a global switch
2012-10-10 05:18:57 +02:00
d732e7e211 Lumiera Forward Iterators: remove support for post-increment 2012-01-08 01:14:36 +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