Commit graph

997 commits

Author SHA1 Message Date
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
44970ed96e unsuccessful attempt to bridge between std::hash and boost::hash_value (Ticket #722) 2014-04-03 22:43:35 +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
a640283e4c introduce typedef for Frame numbers (see #882) 2013-11-18 00:01:43 +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
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
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
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
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
86e76bf7fe define setup and chaining of render planning chunks (#920) 2013-08-17 03:37:36 +02:00
2488478a12 file-level comment for time values
a recent discussion showed that it is rather likely
for a reader new to the whole time handling framework
to encounter this header first....
2013-08-13 01:27:37 +02:00
84281d5b60 WIP: CalcStream initialisation
especially: where to establish the effective Timings.

also fixed several compilation errors
2013-06-15 04:02:48 +02:00
9cfbc7bbe6 GCC 4.7 compilation fix
now builds for me on Debian-7 Wheezy 64bit

unqualified member functions in dependent base classes not found anymore.
Need to qualify either the class or the instance.
2013-05-10 00:48:25 +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