Commit graph

23 commits

Author SHA1 Message Date
e0f866092d rectify-design(#301): disentangle CmdClosure hierarchy
Completely removed the nested hierarchy, where
the top-level implementation forwarded to yet another
sub-implementation of the same interface. Rather, this
sub-implementation (OpClosure) is now a mere implementation
detail class without VTable, and without half-baked
re-implementation of the CmdClosure interface. And the
state-switch from unbound to bound arguments is now
implemented as a plain-flat boolean flag, instead of
hiding it in the VTable.

To make this possible, without having to rewrite lots of
tests, I've created a clone of StorageHolder as a
"proof-of-concept" dummy implementation, for the sole
purpose of writing test fixtures. This one behaves
similar to the real-world thing, but cares only
for closing the command operation and omits all
the gory details of memento capturing and undo.
2016-02-07 01:41:40 +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
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
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
7be1b7d35d Switch from TR1 preveiw to the new standard headers
- functional
- memory
- unordered collections
2014-04-03 22:42:48 +02:00
50885a065b move asside lib/format.hpp
...to make room for a new more specialised header
2011-12-27 07:44:49 +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
3f1b7651e9 GPL header whitespace 2010-12-17 23:28:49 +01:00
7b7e9096a3 Hook up scope contents iterator in PlacementIndex (closes #343) 2009-12-27 06:25:34 +01:00
07de2a767b implement equality comparison on CommandImpl level 2009-10-11 05:57:44 +02:00
96d5ce74c4 Ticket #292: outline unit test explicitly covering equality comparisions 2009-10-11 05:57:43 +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
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
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
51712f218d still fighting to get capture fun and undo func bound together 2009-06-28 15:27:27 +02:00