Commit graph

3574 commits

Author SHA1 Message Date
1138898989 UI-Coordinates: implement indexed access
...under the assumption that the content is normalised,
which means
- leading NULL is changed to Symbol::EMPTY
- missing elements in the middle are marked as "*"
- trailing NULL in extension storage is handled by adjusting nominal extension size
2017-09-30 02:48:25 +02:00
ab391d3dfa UI-Coordinates: implement size()
...which is the first step towards standard storage handling
2017-09-30 02:17:13 +02:00
9378badf6b UI-Coordinates: integrate the initialisation split
...as developed in during the metaprogramming investigation
2017-09-30 00:46:52 +02:00
a839cac02b UI-Coordinates: memory management for PathArray extension storage 2017-09-29 18:04:28 +02:00
73adcdf2e0 UI-Coordinates: initial draft for PathArray storage
after various fruitless attempts to rely somehow on the array variant of unique_ptr,
I ended up with a hand coded version of an heap allocated array, managed automatically
2017-09-29 15:03:14 +02:00
4348cd462c Metaprogramming: extend testcase and remould pickInit to support arbitrary arguments
as it turned out, the solution from yesterday works only with uniform argument lists,
but not with arbitrarily mixed types. Moreover the whole trickery with the
indices was shitty -- better use a predicate decision on template argument level.
This simple solution somehow just didn't occur to me...
2017-09-29 02:35:15 +02:00
636ab6e608 Metaprogramming: integrate the new facilities into the library 2017-09-29 00:51:13 +02:00
dc35a1a6e5 Investigation: add a solution for default initialisation of missing arguments
...still somewhat unsatisfactory, because
- no clear compile error message when invoking pickArg with insufficient arguments
- the default initialisation case in SelectVararg is duplicated and messy
2017-09-28 03:58:09 +02:00
3f9565a156 Investigation: augment index iterator to deal with insufficient arguments
basically we want "all the rest" of the arguments to go to the recursive delegate
2017-09-28 01:40:23 +02:00
3f8606c474 Metaprogramming(#987): extract some variadic sequence helpers
some time ago we abandoned our own tuple type in favour of std::tuple
Since then, the helpers and ported utilities provide some generic helpers
to deal with variadic argument sequences, especially to build index sequences,
which in turn can be used to "pick" individual arguments from a variadic parameter pack.

The expectation is for this part of the support library gradually to grow and
in parts to replace the existing type sequence processing helpers. The expectation
is that we'll retain the basic type sequence, lib::meta::Types, but retrofit it
to rely on variadic arguments
2017-09-28 00:19:52 +02:00
4b67521e26 Metaprogramming(#987): mark planned transition to variadic arguments
since the adoption of C++11, we gradually transition our metaprogramming helpers
to support and rely on variadic template parameters. For the time being,
we just augment existing facilities when it comes in handy, yet some more
heavyweight lifting and overall clean-up remains to be done eventually.
2017-09-28 00:10:45 +02:00
3ad3f11f1e Investigation: slightly improved similar solution 2017-09-27 02:46:01 +02:00
e5dc7ba2bc Investigation: dissect argument packs
start investigation on generic techniques to dissect an variadic argument pack
2017-09-26 19:23:03 +02:00
372512006f UI-Coordinates: use a recursive implementation layout
this is a more or less arbitrary guess regaring performance requirements
2017-09-25 00:26:19 +02:00
5e1c25aaf5 UI-Coordinates: extract PathArray base abstraction into a library class 2017-09-24 22:50:42 +02:00
4082526ec6 UI-Coordinates: stub basic path element iteration 2017-09-24 21:14:26 +02:00
6073dbfcaf UI-Coordinates: stub basic access operations (WIP) 2017-09-24 17:20:47 +02:00
feb8414016 UI-Coordinates: stub to pass compilation 2017-09-23 02:25:52 +02:00
afda9e0a69 UI-coordinates: also need to define a topological addressing scheme (#1106) 2017-09-10 00:32:31 +02:00
fef0a812c1 DockAccess: start implementation draft for the DSL 2017-09-09 23:30:44 +02:00
b27681ec4f DockAccess: design a configuration DSL 2017-09-08 18:50:39 +02:00
a9797e4a4f DockAccess: analysis continued...
exploring the idea of a configuration DSL.
As a first step, this could be a simple internal DSL,
implemented as a bunch of static functor objects, which are internally bound
and thus implemented by the ViewLocator within InteractionDirector
2017-09-08 03:53:52 +02:00
753c895035 DockAccess: consider a generic ID addessing scheme for the UI (#1005)
...based on a selection of Model types and an access strategy
2017-09-03 01:04:00 +02:00
0ad387f5c9 DockAccess: create a ViewLocator service
responsible for access and allocation of component views.
Internally wired to the PanelLocator within the global WindowLocator

This setup settles those nasty qeustions of crosswise top-level access
2017-09-02 19:28:57 +02:00
4f77075d9c DockAccess: integrate a PanelLocator intermediary
...into the WindowLocator
This is to become a low-level query and acess front-end
and will be implemented just by traversing the windowList_
2017-09-02 19:03:00 +02:00
0614ca36ca DockAccess: consider how to access view components. Rename WindowList (#1104)
this starts work on a new UI global topic (#1004)

- coin a new term: "view component"
- distinction between veiw component and Panel
- consider how to locate view components
- WindowList becomes WindowLocator
2017-09-02 18:36:58 +02:00
5b445a2361 InfoBox: extract into dedicated widget 2017-09-02 00:51:06 +02:00
ee67e4914c InfoBox: scroll to the last inserted line reliably
need to use a text mark; we can simplify this task somewhat
by exploiting the fact that the text cursor is a default defined text mark
2017-09-01 01:02:48 +02:00
2d2a549341 InfoBox: add a simple text display widget 2017-09-01 00:28:43 +02:00
a91b444ade InfoBox: draft the next preliminary implementation steps (#1002)
...I need a quick-n-dirty temporary solution,
just to have a place to display some messages in the UI asynchronously
2017-08-31 20:32:49 +02:00
45b3a990f2 DemoGuiRoundtrip: add new dock for UI experiments (#1099)
...after investigating problems related to the management of docking pane contents
2017-08-31 20:15:52 +02:00
29246621df UI-Dispatch: remove unnecessary intermediary function
...since the generateErrorResponse() in UiDispatcher already adds some
explanatory boilerplate to the message; and we can not do anything beyond
publishing the message into the UI message box
2017-08-31 14:53:15 +02:00
526fd3ca16 UI-Dispatch: add generic catch-all error handler
...to ensure no exception can escape at top level of the actions
dispatched asynchronously into the UI event thread
2017-08-25 17:38:51 +02:00
937ad64596 DiffMessage: now uniformly plays the role of MutationMessage (closes #1066) 2017-08-13 07:25:32 +02:00
82a12115c3 DiffMessage: complete documentation 2017-08-13 07:25:32 +02:00
f7402ef89d Library: allow to consume an iterator while taking the snapshot 2017-08-13 07:25:32 +02:00
255958b23b Library: fix yet another misconception in iterator comparison
...again the situation when we want to use Lumiera iterators
in a stadard "for each" loop
2017-08-13 00:07:38 +02:00
7e9bb1fb5d DiffMessage: elaborate integration test... 2017-08-12 23:02:00 +02:00
b45ffe5cbe DiffMessage: fix insidious initialisation bug (related to #963)
basically DiffMessage has a "take everything" ctor, which happens
to match on type DiffMessage itslef, since the latter is obviously
a Lumiera Forward Operator. Unfortunately the compiler now considers
this "take everyting" ctor as copy constructor. Worse even, such a
template generated ctor qualifies as "best match".

The result was, when just returing a DiffMessage by value form a
function, this erroneous "copy" operation was invoked, thus wrapping
the existing implementation into a WrappedLumieraIterator.

The only tangible symptom of this unwanted storage bloat was the fact
that our already materialised diagnostics where seemingly "gone". Indee
they weren't gone for real, just covered up under yet another layer of
DiffMessage wrapping another Lumiera Forward Iterator
2017-08-12 18:16:06 +02:00
5fbc4b84bf DiffMessage: switch to moving DiffMessage over the bus
basically the opaque-buffer based MutationMessage implementation is obsoleted now
2017-08-12 17:59:02 +02:00
32f2d6ed9a IterSource: optimise hand-over at construction
by moving, we can avoid the generation of up to 3 additional shared copies
of the DataHandle. The whole invocation now works without touching any shared count
and thus without incurring a memory barrier...
2017-08-12 16:27:30 +02:00
06ff5c4e71 DiffMessage: complete test of diagnostic output 2017-08-12 14:33:26 +02:00
efc27fd07b DiffMessage: draft content diagnostics wrapper 2017-08-12 05:55:31 +02:00
d4ac2d78e2 C++11: improve moving and forwarding of iterators
this becomes more relevant now, since the actual MutationMessage iterators
are implemented in terms of a shared_ptr to IterSource. Thus, when building
processing pipelines, we most definitively want to move that smart-ptr into
the destination, since this avoids touching the shared count and thus avoids
generating unnecessary memory barriers.
2017-08-12 03:01:35 +02:00
4a2384e242 DiffMessage: add further convenience ctor for varargs
hey... all my dream constructors became true
2017-08-12 03:00:38 +02:00
380fa5bb38 DiffMessage: add further convenience ctors for STL containers 2017-08-11 22:23:51 +02:00
7dc0fdd67a DiffMessage: implement convenience ctor to build from Lumiera Iterator 2017-08-11 21:27:51 +02:00
9e4f3f3314 metaprogramming: switch util-foreach to variadic templates (#967)
...likewise low hanging fruit
2017-08-11 20:35:53 +02:00
a731b3caf4 metaprogramming: get rid of the remaining boost::enable_if usages
...low hanging fruit
2017-08-11 20:23:46 +02:00
8c1a43a6b3 metaprogramming: switch util-foreach to our own enable_if implementation
...allows us to get rid of quite some boost-includes
Incidentally, "our own" implementation is equivalent to both the
boost implementation and the implementation from C++14
It is just a bit more concise to write.
2017-08-11 20:02:37 +02:00