Commit graph

2643 commits

Author SHA1 Message Date
888099466f release prep: remove defunct autotools buildsystem 2013-10-29 03:47:50 +01:00
d15ec47f9e DOC: some further round-up and polishsing 2013-10-28 06:14:42 +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
7967f6270d bugfix: don't call the dtor on failed objects
When a ctor throws, the dtors of sub-objects have already been
invoked. The object itself never existed, strictly speaking,
and thus the dtor must not be invoked. Usually the runtime system
handles matters automatically this way, but since we're doing
here placement new into an array, we're responsible ourselves

This error was uncovered by compiling with Clang.
GCC automatically neutralised this erroneous dtor invocation.
2013-10-21 05:17:59 +02:00
3a119ca9dd remove diagnostic msgs 2013-10-21 02:55:33 +02:00
7204c58680 Ticket #934: refactor DependencyFactory back to local memory management
This removes the central clean-up registry;
Instead, now the InstanceHolder manages the lifecycle of
the service instances placed into static memory; the net effect
is that DependencyFactory and instances are created and destroyed
together, locally for each usage scope
2013-10-21 02:42:43 +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
dcae33a173 debugging: diagnostic msgs on singleton creation/destruction 2013-10-21 00:32:55 +02:00
a889e5ee8b restore santity check against double creation of singletons
this check may look weird, but in fact a similar check in the
old version of the singleton factory helped us spot a problem
with Clang, most likely but of the compiler or runtime system
2013-10-20 22:40:14 +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
d43a4c2c86 resolve problem with static initialisation order
...uncovered by the better checks of the new DependencyFactory!
2013-10-20 03:21:24 +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
7b3c68898a move header for test support 2013-10-20 01:24:49 +02:00
b225120d09 reworkted Singleton / DependencyFactory unit test pass 2013-10-20 00:34:21 +02:00
24792c1f19 brainstorming: how to implement the test mock injection 2013-10-19 23:37:00 +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
ed7f975748 draft the creation and lifecycle facilities 2013-10-19 00:07:06 +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
08cae2617d fix insideous problem with mutex initialisation
explanation: we use pthread_once to define a mutex type descriptor,
used to define some of our mutexes as recursive mutexes. Now,
pthread_once relies on a counter stored in a given location;
we used a non-exported global var for this counter.

Unfortunately this ties the mutex initialisation to the static
initialisation of the compilation unit holding this counter variable.
Theoretically it would be possible (we never observed such an incident)
that, during static initialisation, a singleton was brought up,
which requires a class-scoped lock, implemented as recursive mutex.
And it would be possible for this singleton locking to happen prior
to initialisation of the mentioned counter variable.

As a fix, I've moved the counter varialbe into a function scoped
static variable, since that is guaranteed by the C++ runtime system
to be initialised at first usage of the function, irrespective of the
initialisation order of the enclosing compilation units
2013-10-13 01:48:27 +02:00
67523269fc clean-up and comments for the singleton factory 2013-10-07 01:58:13 +02:00
66b62e2146 remove superfluous template parameter dependency 2013-10-07 01:58:13 +02:00
6d064cb7b7 Clang(#928): clarify instantiation of dependent template
clang-3.2 requires a clarification here (while previous versions
of clang and GCC automatically resolved the ambiguity by assuming
use of a nested, dependent template).
2013-10-06 23:15:49 +02:00
961936ce9d Clang-3.0(#932): workaround for a known problem of Clang-3.0 (Debian/stable)
http://lists.cs.uiuc.edu/pipermail/cfe-commits/Week-of-Mon-20121203/069267.html

http://stackoverflow.com/questions/13521163/variadic-template-as-template-parameter-deduction-works-with-gcc-but-not-with-c

Clang aborts the template type deduction due to different size of the argument lists;
in fact the missmatching arguments can be filled in perfectly from the default template arguments.

As a workaround, we'll include an unused placeholder type parameter into the templated function,
to make the match succeed.
2013-09-27 23:28:29 +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
87a84a931f Import priority queue implementation from Cehteh's library 2013-09-13 03:28:50 +02:00
Christian Thaeter
df749271d0 cleanup in the priqueue test-code 2013-09-13 02:57:26 +02:00
Christian Thaeter
ff51ea54e6 Add a copy function to the priqueue
by providing a custom copy function one can adjust otherwise non-copyable
elements. This should be used cautionary because dereferencing elements may
poison the cache and thus have some considerable performance impact
(profile this)
2013-09-13 02:57:26 +02:00
Christian Thaeter
98d6ba3967 priqueue implementation
this adds a minimalistic priority queue based on a binary heap
2013-09-13 02:57:26 +02:00
bcfc1ed783 some bits to round up the job descriptor API 2013-09-08 19:19:02 +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
bb0b4578ec move job planning implementation to separate compilation unit 2013-09-01 02:26:46 +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
79370ad494 FrOSCon: review of job and job definition 2013-08-24 15:53:05 +01:00
ecf65a70fb start a draft to shape the high-level interface for the Scheduler 2013-08-19 04:12:03 +02:00