Commit graph

282 commits

Author SHA1 Message Date
37fb19ae0a refactoring: separate headers 2016-02-06 18:50:51 +01:00
2fbb7ba7c9 simplification(#301): use ctor chaining to remove clutter 2016-02-06 16:42:42 +01:00
be2179ea81 command-closure-design(#301): better naming of implementation classes
Seems this was part of the confusion when looking at
the inheritance graph: Names where almost reversed
to the meaning. the ArgumentHolder was *not* the
argument holder, but the top level closure. And
the class "Closure" was not "the" Closure, but
just the argument holder. ;-)
2016-02-06 16:29:06 +01:00
deb7a6758c add diagnostic output to the command implementation record
...allows better diagnostic in tests, when handling a command
through the new mock handling pattern within Test-Nexus
2016-02-05 23:55:07 +01:00
3fef76e1d7 command-binding(#990): add new GenNode based argument binding
based on the new generic tuple builder, we're now able to
add a new binding function into the command implementation
machinery, alongside the existing one. As it stands, the
latter will be used rather by unit tests, while the new
access path is what will be actually taken within
the application, when receiving argument binding
messages dispatched via the UI-Bus.
2016-01-29 00:59:34 +01:00
16597fcd99 extend command API to also accept a lib::diff::Rec<GenNode> for arguments
WIP: have to decide how the arguments can be unpacked
and how to generate proper runtime type mismatch errors.
2016-01-22 20:29:45 +01:00
1dc9642ec4 draft implementation of diagnostic command handler 2016-01-22 19:44:17 +01:00
005e665c13 clean-up design of the command handling patterns (#210)
this was a classical example of a muddled and messed-up design,
driven just by the fact that I wanted to "spare" some functions,
with the net effect of writing more functions, plus a proxy class
plus create a lot of confusion for the reader.

This was easy to resolve though, once I resorted to the
general adivice to make public interface methods final,
make the extension ponts protected and never
to chain two extension points
2016-01-22 15:25:08 +01:00
f6d04d4d02 refactoring(#988): switch correspoinging tests to std::tuple
...with this changeset, our own tuple type should be
basically disconnected and not used anymore
2016-01-19 23:53:20 +01:00
0e10ef09ec refactoring(#988): switch command framework to std::tuple
this was rather easy, since the stadard tuple is a drop-in replacement,
and we do nothing special here, beyond inheriting from a tuple type
2016-01-19 03:56:54 +01:00
334f542897 clean-up(#985): remove code superseded by this rework
now finally able to remove most of the cruft from format-util.hpp
and get rid of the infamous util::str
2016-01-09 02:05:23 +01:00
2c20d407fc mass clean-up: adapt usage of std::cout pretty much everywhere
- remove unnecessary includes
- expunge all remaining usages of boost::format
- able to leave out the expliti string(elm) in output
- drop various operator<<, since we're now picking up
  custom string conversions automatically
- delete diagnostics headers, which are now largely superfluous
- use newer helper functions occasionally

I didn't blindly change any usage of <iostream> though;
sometimes, just using the output streams right away
seems adequate.
2016-01-07 20:12:46 +01:00
d09a5846d4 basically a working solution for toString in ostream
...and learned a lot about the new type_traits on the way.

As it seems, it is not possible to get a clean error message
when passing an "object" with no custom string conversion;
instead, some overload for an rvalue-ostream kicks in.

probably I'll go for shoing a type string in these cases
2016-01-04 22:21:09 +01:00
b96fd1299d preparation(#985): purge any remaining direct uses of boost::format
now we use boost::format through our own front-end util::_Fmt
solely, which both helps to reduce compilation time and code size,
and gives us a direct string conversion, which automatically
uses any custom operator string() available on arguments.

While desirable as such, I did this conversion now, since
it allows us to get rid of boost::str, which in turn helps
to drill down any remaning uses of our own util::str
2016-01-04 01:38:04 +01:00
2704ad4512 decide upon the actual mechanics of command binding and invocation 2015-11-28 08:15:32 +01:00
08e7e3df15 prefer more readable bool operator spelling
especially the '!' for negation is sometimes too terse
and easily overlooked.
2015-09-25 03:12:04 +02:00
1c8cddba84 clean-up visibility of lib::P
this was introduced into namespace mobject and spread from there.
Since the habit is to use more specific typedefs like PClip,
it is preferrable to spell out the full namespace
2015-08-16 01:35:29 +02:00
7fcee74960 formatting helper to join a collection into a string
Ouch!
Why does C++ lack the most basic everyday stuff?
It needn't be performant. It needn't support some fancy
higher order container. Just join the f***ing strings.

use Bosst??  -- OMG!! pulls in half the metra programming library
and tries to work on any concievable range like object. Just
somehow our Lumiera Forward Iterators aren't "range-like" enough
for boost's taste.

Thus let's code up that fucking for-loop ourselves, once and forever.
2015-08-16 01:35:28 +02:00
d064623bab Reworked MultiFact(#388): switch in the new implementation 2014-09-14 23:58:05 +02:00
7be1b7d35d Switch from TR1 preveiw to the new standard headers
- functional
- memory
- unordered collections
2014-04-03 22:42:48 +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
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
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
5dfe5e099f refactor namespaces for query and defaults manager 2012-12-01 08:44:07 +01:00
baefd74ae7 prepare refactoring of the Query interface 2012-11-25 02:04:19 +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
24a8d6a926 generalised diagnostic context passes unit test 2011-12-24 05:57:28 +01:00
451b0abec5 spelling and typos 2011-12-24 05:48:31 +01:00
d9f84a9bfd clean up lib/meta namespaces 2011-12-03 03:15:59 +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
5350ef6dbe split off and test-cover simple typelist utils
these simple utils (length of typelist, maximum size
containment test) are mostly not used in conjunction
with the more elaborate typelist manipulatino utils.
Moreover, we lacked a dedicated unit test
2011-09-25 19:26:11 +02:00
057f32e15b rename the typelist-manipulation header 2011-09-25 19:26:09 +02:00
db2b02f0c5 define a front-end for explicit allocations
...currently just defined by forwarding
to std::allocator
2011-09-25 19:26:09 +02:00
1b0cb56dcc implement PlayOut subsystem and draft OutputDirector 2011-09-25 19:25:55 +02:00
3f1b7651e9 GPL header whitespace 2010-12-17 23:28:49 +01:00
c4282560ce fix two regressions 2010-12-12 01:53:23 +01:00
7043db90ee introduce an explicit StreamType::ID 2010-12-10 17:39:39 +01:00
5c28b5d46e re-read, verify and finish off the Scope, ScopeLocator and QueryFocus implementation 2010-10-16 02:21:19 +02:00
330eb2c243 extended for-each looping helpers. Closes #479 2010-01-04 14:48:00 +01:00
7b7e9096a3 Hook up scope contents iterator in PlacementIndex (closes #343) 2009-12-27 06:25:34 +01:00
0b289863e9 documentation correction. command entry is created on completed definition now. 2009-11-27 02:02:42 +01:00
cd51e5fef0 Proc Command handling frontend finished and usable for now
Additional convenience shortcuts and a bit of polishing.
Closes Ticket #300
2009-10-11 05:57:46 +02:00
c6d5f8a0b4 Proc Command framework: *first integraton round finished* 2009-10-11 05:57:46 +02:00
ae01f85452 replace existing implementation with CommandImplCloneBuilder 2009-10-11 05:57:45 +02:00
fdd940feba clone builder implemented; problem resolved according to test 2009-10-11 05:57:45 +02:00
e32044e453 refactor CmdClosure to accept a cloneBuilder visitor 2009-10-11 05:57:45 +02:00
bb7ff5e317 WIP draft of clone builder implementation 2009-10-11 05:57:45 +02:00
a4ad41a4e9 Idea how to solve the problem with cloning the UNDO functor 2009-10-11 05:57:45 +02:00
0bcbf7fee0 fix further problems uncovered by test; allow for anonymous cloning 2009-10-11 05:57:45 +02:00
17c7160f02 refactor CommandDef, get rid of the possibility of re-defining. YAGNI! 2009-10-11 05:57:45 +02:00
37cd451367 fix sloppy definition of less-than comparison, which caused malfunction of registry 2009-10-11 05:57:45 +02:00
2ad896027b why doesn't the reverse lookup return a Symbol?
damn! I have the vague rememberance that I had a reason for
not returning a Symbol. Anyway, here it goes...
2009-10-11 05:57:44 +02:00
d2acf48587 change semantics of state predicates, as it seems less surprising this way 2009-10-11 05:57:44 +02:00
95db5f9840 clarify state predicates in conjunction with command lifecycle 2009-10-11 05:57:44 +02:00
c8e049cdea Command system basic unit test pass 2009-10-11 05:57:44 +02:00
5861597d7f smash a glorious ref-to-local object bug 2009-10-11 05:57:44 +02:00
4f1c034b58 CommandRegistry: function test pass 2009-10-11 05:57:44 +02:00
07de2a767b implement equality comparison on CommandImpl level 2009-10-11 05:57:44 +02:00
231278bafe implemented comparison on function erasure, pending test 2009-10-11 05:57:43 +02:00
5068016805 WIP draft how the equality comparison on a function erasure could work 2009-10-11 05:57:43 +02:00
96d5ce74c4 Ticket #292: outline unit test explicitly covering equality comparisions 2009-10-11 05:57:43 +02:00
4c3fc9e64d WIP getting CommandRegistry_test to run
(equality on CommandImpl is still missing)
2009-10-11 05:57:43 +02:00
39f50b548c Ticket #266: simplify and combine the bind(...) mixin templates into a single header 2009-10-11 05:57:43 +02:00
2aac4e8ea0 remove spurious AcceptArgumentBinding mixin from ArgumentHolder
it's an implementation class, after all, and doesn't need a convenience API
2009-10-11 05:57:43 +02:00
abd23ae399 TypedAllocationManager (frontend) now in lib:: -- unit test pass 2009-10-11 05:57:43 +02:00
cb7c884293 handling patterns usable for now. Close #275 2009-10-11 05:57:42 +02:00
8136b0a4b8 HandlingPattern: basic unit test pass 2009-10-11 05:57:42 +02:00
248b87f344 Basic implementation of HandlingPattern settled for now
the ''real implementation'' (integrated with the ProcDispatcher)
is still missing, but it's enough to get the tests going
2009-10-11 05:57:42 +02:00
effbb49afb Dummy HandingPattern implementation for unit tests 2009-10-11 05:57:42 +02:00
bb45ad67d8 WIP change how the undo operation is invoked 2009-10-11 05:57:41 +02:00
7e4a984ed4 Finish MultiFact for now; use it to set up a table of HandlingPatterns 2009-10-11 05:57:41 +02:00
bc6f8eebda basically working draft; convoluted and with a lot of static magic 2009-10-11 05:57:41 +02:00
8c21f21acc namespace cleanup: bring Singleton and Factory into lib:: 2009-10-11 05:57:41 +02:00
e9b95e47cf Command handling pattern? test-driven brainstorming 2009-10-11 05:57:40 +02:00
da8be6861c WIP some musing about opening the session interface 2009-10-11 05:57:40 +02:00
83cd7fd830 Extract the type-based counting into a separate facility 2009-10-11 05:57:39 +02:00
c921d927a2 provide API for counting the allocations (unimplemented) 2009-10-11 05:57:39 +02:00
022a961284 finish implementation of CommandRegistry 2009-10-11 05:57:39 +02:00
6a77bebb6a fix type for search in map 2009-10-11 05:57:39 +02:00
7fccecacce WIP using the reverse index to find out the Command-ID
this includes using a Command* as key within a std::map
2009-10-11 05:57:39 +02:00
4c9af94e1d improve and clean up the Command interface 2009-10-11 05:57:39 +02:00
8dc434a141 CommandRegistry implementation (...) 2009-10-11 05:57:39 +02:00
18c357eb4a start using Symbol datatype instead of a disguised char* 2009-10-11 05:57:38 +02:00
f278d4521c WIP: to make the ID type usable as hashtable key 2009-10-11 05:51:31 +02:00
c9f3a345dc WIP towards CommandRegistry implementation 2009-10-11 05:51:31 +02:00
09b9f64842 diagnostics about captured state (on the CmdClosure API) 2009-09-21 03:33:56 +02:00
246c535569 Rewrite CmdClosure to actually invoke rather then to create a tr1::bind term
basically this should close Ticket #205  (some details missing)
2009-09-21 03:15:06 +02:00
925fa685b1 WIP change HandlingPattern to work on CommandImpl rather 2009-09-21 03:11:46 +02:00
fd7337f801 WIP drastically simplify command-mutation.
As we're using now a command frontend interface and
and CommandImpl frame in the Registry, most of the
functionaliry on Mutation's interface is superfluous.
Additionally, this separates Mutation and Closure.
2009-09-20 18:37:20 +02:00
d15903f1db resolve design mismatch, as spotted by Ticket #260
Hopefully this closes #260
2009-09-07 03:25:00 +02:00
f21366833d Merge latest work on the builder interface + NoBug adaptations
Merge commit 'bb8eb4055020c609245fe35a369c70e2acb1daf6' into session
2009-09-07 01:25:28 +02:00
6fc7aedd95 Merge NoBug-release related additions
Merge branch 'master' into builder
2009-09-05 19:16:13 +02:00
937df66774 apply Temp.Fix for Ticket #260 2009-09-05 19:14:36 +02:00
9269db45cc WIP rename class Processor to RenderGraph (engine) 2009-08-29 13:19:43 +02:00
1b4aa98cdf use the new stream type definitions to get ahead with the builder work 2009-08-29 12:19:26 +02:00
236e267af1 basic coverage for TypedAllocationManager 2009-08-29 03:10:34 +02:00
45c04b4463 re-visit the command impl allocation; add a quick-n-dirty implementation based on heap allocation 2009-08-29 02:16:28 +02:00
a845a4d234 unit test covering the cmd registry 2009-08-11 08:35:37 +02:00
0d4d3f25dc implement mising diagnostics 2009-08-11 06:32:29 +02:00
8925c9a73b see ticket 205 2009-08-10 01:33:26 +02:00
b9763b6c16 command frontend sort-of written now, pending integration test 2009-08-10 01:32:33 +02:00
5988b1d697 clean up command interface 2009-08-10 01:30:59 +02:00
9f40e4af9c implemented definition and access of handling patterns 2009-08-09 21:55:47 +02:00
eada1aa745 now able to solve the store-as (clone) problem 2009-08-09 04:12:46 +02:00
da3cf5a6a6 rework the cmd registry to build on this 2009-08-09 03:48:19 +02:00
e178bd0811 completely factor out allocation/deallocation and placement new into a base class 2009-08-09 03:47:32 +02:00
82aee60b14 WIP attempt to solve the clone problem (draft) 2009-08-07 17:13:21 +02:00
09a594d2c5 WIP: considerations for a store-as (clone) operation 2009-08-06 18:00:19 +02:00
a677e2edde second shot for implementing the binding: better the other way round 2009-08-04 02:25:50 +02:00
b6246cbb10 rename the operation "closeArguments", which is more to the point 2009-08-04 02:24:47 +02:00
efd6e99c99 first shot at solving the problem how to bind later on 2009-08-04 01:30:50 +02:00
155254dd9b build new cmd impl object within registry 2009-08-03 18:17:41 +02:00
853aff1228 fixed and stubbed until it passes compiler again 2009-08-02 20:57:04 +02:00
327cbc822a WIP extended binding and invocation to support the convenience shortcuts 2009-08-02 20:55:43 +02:00
4236d0649a WIP: implement the basic operation of execution pattern 2009-08-02 18:00:03 +02:00
f2126c0764 WIP partially get new proc-layer command impl through the compiler 2009-08-01 23:57:12 +02:00
8971d667cf WIP more implementation... 2009-08-01 17:14:27 +02:00
c2d9a02303 WIP some more nailing down of implementation details 2009-08-01 02:18:01 +02:00
c9e143995e WIP phase out the superfluous static access functions 2009-07-30 20:50:57 +02:00
655177921f WIP this might solve the race condition 2009-07-30 03:57:19 +02:00
eaa4adddde WIP more implementation drafting... 2009-07-29 16:55:15 +02:00
19dd606f54 WIP some implementation drafting... 2009-07-27 02:38:53 +02:00
3ebb8d0285 WIP and more stubbing... 2009-07-26 02:00:47 +02:00
c85eb20cee allow bind functions with return value 2009-07-26 02:00:00 +02:00
1db718c2b3 WIP more stubbing... 2009-07-25 19:21:50 +02:00
76b6f5d374 ooops, forgot some copy-n-pastes 2009-07-25 17:51:59 +02:00
211a2dabdd WIP stubbing undefined operations... 2009-07-24 17:50:14 +02:00
c5f781596e reorganise the intermediary command def context classes 2009-07-23 03:47:27 +02:00
d80f0cfb8d WIP start some drafting 2009-07-21 04:49:00 +02:00
c85d1d3cd8 ArgumentHolder finished, low-level integration test pass 2009-07-20 07:03:18 +02:00
63bad834c1 comparisons and state detection now working as expected 2009-07-20 05:09:46 +02:00
33757bbac3 why the hell doesn't boost provide functor comparison operators..
(yes I know why: it can't be implemented 100% correctly)
2009-07-20 04:21:24 +02:00
e879e0c81b implemented argument and memento comparisons (doesn't pass test yet) 2009-07-19 19:13:25 +02:00
f73c938850 ArgumentHolder reworked to use InPlaceBuffer; now passes basic tests 2009-07-19 08:32:49 +02:00
5f0c9e209e remove any use of boost::function in favour of <tr1/functional>
this resolves some long standing problems with ambiguous placeholders
closes Ticket #161
2009-07-19 05:47:36 +02:00
584878e0f8 yet another variation of managing an object in-place 2009-07-18 22:07:46 +02:00
6510155e76 back on route: trying to get the ArgumentHolder to fly... 2009-07-18 19:36:32 +02:00
fa3d596a59 helper for accepting arguments passes unit test 2009-07-12 23:21:37 +02:00
66f7b1be17 WIP impl.draft for the helper... 2009-07-12 20:08:35 +02:00
b392d6bf84 WIP design a helper for accepting the arguments to bind 2009-07-12 19:30:55 +02:00
accaba4904 WIP impl draft for ArgumentHolder 2009-07-12 18:55:33 +02:00
9aa5ba560c finish and tidy up control::Mutation, unit test pass 2009-07-10 19:04:01 +02:00
e892a0087a remove this bool check...
seems to be overengineering! The same information can be easily accessed throught the ArgumentHolder
2009-07-10 19:00:40 +02:00
6bd1e8e179 tidy up and finish the MementoTie + unit test 2009-07-09 20:47:21 +02:00
9e95ec8b60 MementoTie unit test pass 2009-07-09 18:35:22 +02:00
c7b6165c6c WIP resolved the simple mismatches, but still... 2009-07-08 05:36:02 +02:00
2348a5af2b WIP draft capturing mechanism implementation, using the new tools and helpers... 2009-07-06 05:26:31 +02:00
d13d461a9c revamp namespace func. Finish excursion on function handling 2009-07-03 14:31:52 +02:00