Commit graph

27 commits

Author SHA1 Message Date
ec0c14e129 Invocation: develop more complex text data manipulations
The overall goal is eventually to arrive at something akin to a ''»Dummy Media-processing Library«''
 * this will offer some „Functionality“
 * it will work on different ''kinds'' or ''flavours'' of data
 * it should provide operations that can be packaged into ''Nodes''

However — at the moment I have no clue how to get there...
And thus I'll start out with some rather obvious basic data manipulation functions,
and then try to give them meaningful names and descriptors. This in turn
will allow to build some multi-step processing netwaorks — which actually
is the near-term goal for the ''main effort'' (which is after all, to get
the Render Node code into some sufficient state of completion)...
2024-11-28 04:17:01 +01:00
e50e9cb8e7 Library: attempt workaround to problem with references
There is an insidious problem when the Transformer takes references to internal state
within upstream iterators or state core. This problem only manifests when
a invariant based filtering or grouping operation is added after the Transformer,
because such an operation (notably Filter) will typically attempt to establish
the invariant from the constructor (to avoid dangling state). Unfortunately
doing so involves pulling data ''before the overall pipeline is moved into final location''

A workaround is to make the Transformer ''disengage'' on copy, so to provoke
a refresh and new pull in the new location after the copy / move / swap.
This only works if the transformer function as such is idempotent.
2024-11-23 22:48:11 +01:00
f0eeabb29e Library: extract the basic setup for a tuple-zipping iterator
Indeed the solution worked out yesterday could be extracted and turned generic.
Some in-depth testing is necessary though, and possibly some qualifications to allow pass-through of references...

Moreover, last days I started collecting notes regarding problem solving patterns,
which I tend to use frequently, but which might not be obvious and thus can easily
be forgotten. In fact, I had encountered several cases, where I did invent some
roughly similar solution repeatedly, having forgotten about already settled matters.

Hopefully the habit of collecting notes and hints at a central location serves to remedy
2024-11-22 22:07:39 +01:00
b6bdcc068d Library: investigate how a »zip iterator« can be built
Basically I am sick of writing for-loops in those cases
where the actual iteration is based on one or several data sources,
and I just need some damn index counter. Nothing against for-loops
in general — they have their valid uses — sometimes a for-loop is KISS

But in these typical cases, an iterator-based solution would be a
one-liner, when also exploiting the structured bindings of C++17

''I must admit that I want this for a loooooong time —''
...but always got intimidated again when thinking through the fine points.
Basically it „should be dead simple“ — as they say

Well — — it ''is'' simple, after getting the nasty aspects of tuple binding
and reference data types out of the way. Yesterday, while writing those
`TestFrame` test cases (which are again an example where you want to iterate
over two word sequences simultaneously and just compare them), I noticed that
last year I learned about the `std::apply`-to-fold-expression trick, and
that this solution pattern could be adapted to construct a tuple directly,
thereby circumventing most of the problems related to ''perfect forwarding''

So now we have a new util function `mapEach` (defined in `tuple-helper.hpp`)
and I have learned how to make this application completely generic.

As a second step, I implemented a proof-of-concept in `IterZip_test`,
which indeed was not really challenging, because the `IterExplorer`
is so very sophisticated by now and handles most cases with transparent
type-driven adaptors. A lot of work went into `IterExplorer` over the years,
and this pays off now.

The solution works as follows:
 * apply the `lib::explore()` constructor function to the varargs
 * package the resulting `IterExplorer` instantiations into a tuple
 * build a »state core« implementation which just lifts out the three
   iterator primitives onto this ''product type'' (i.e. the tuple)
 * wrap it in yet another `IterExplorer`
 * add a transformer function on top to extract a value-tuple for each ''yield'

As expected, works out-of-the-box, with all conceivable variants and wild
mixes of iterators, const, pointers, references, you name it....

PS: I changed the rendering of unsigned types in diagnostic output
    to use the short notation, e.g. `uint` instead of `unsigned int`.
    This dramatically improves the legibility of verification strings.
2024-11-22 22:07:39 +01:00
26bf32525b Invocation: build test-data manipulation function
* based on reproducible data in `TestFrame`
 * using Murmur64A hash-chaining to »mark« with a parameter

This emulates the simplest case of 1:1 processing and can also be applied ''in-place''
2024-11-21 00:50:39 +01:00
b002a5e0b3 DOC: fill in explanations for all subsystems (closes #1145) 2020-02-23 08:21:22 +01:00
beb8406abe Project: switch to C++17 (closes: #1138)
Signed-off-by: Ichthyostega <prg@ichthyostega.de>
2020-02-21 21:10:51 +01:00
d3d7ea35ad Global-Layer-Renaming: fix remaining textual usages and IDs in the code
- most notably the NOBUG logging flags have been renamed now
 - but for the configuration, I'll stick to "GUI" for now,
   since "Stage" would be bewildering for an occasional user
 - in a similar vein, most documentation continues to refer to the GUI
2018-12-10 00:09:56 +01:00
6ce66fc354 Switch to HTTPS: also adjust protocol for the ASCIIDOC generated links 2018-10-26 17:47:18 +02:00
685a9b84ee Library: replace boost::noncopyable by our own library solution
Benefits
 - get rid of yet another pervasive Boost dependency
 - define additional more fine grained policies (move only, clonable)
2018-03-24 05:35:13 +01:00
ef74527f6b DOC: eliminate spurious mentions of tr1:: 2018-01-12 03:03:25 +01:00
567b00aa21 DOC: follow-up of removing boost::scoped_ptr 2017-01-05 01:20:34 +01:00
d6d8ddd536 DOC: remove hotfix patch from backporting/Mint howto
this patch is no longer required; we lowered the
version dependencies in the package proper
2015-11-15 07:10:45 +01:00
e1f7165208 DOC: instructions for building/backporting on Mint 17.2 (Rafaela)
this is a bit trickty, since we need to install gcc-4.9 from a PPA.
Mint only provides the libstdc++ 4.8, which is known to break when
compiling in C++14 mode
2015-11-05 03:27:55 +01:00
0b41ddefd0 DOC: how to use gcc-4.9 on Ubuntu Trusty (14.04 LTS) 2015-11-02 01:34:31 +01:00
c2d5896a3b Project: switch to C++14
This means we have rather tight compiler requirements now.
Beyond that, we expect no serious impact; the most notable
C++14 feature we're likely to use soon is type inference
on lambda arguments.
2015-08-16 01:43:04 +02:00
3dc5c83b33 DOC: small howto improvements 2014-12-01 01:31:19 +01:00
3fb838a041 DOC: some notorious problems to check when breakpoints in Eclipse dont work 2014-10-14 02:42:16 +02:00
79b19b270f DOC: add a page with notes on the IDE setup 2014-08-16 00:03:55 +02:00
50faee12b3 DOC: update the Boost-page to reflect what's part of the language now
several C++11 features used to be Boost features in the past
2014-08-16 00:03:32 +02:00
adc120fecb document the new formatting helper, based on boost::format 2011-12-31 07:54:16 +01:00
2791339841 some practical hints and informations regarding usage of the Boost Libraries
Add a page to the 'coding howto' section, listing those boost libraries we're
using heavily, with a short characterisation for each. Plus some informations
about potential problems
2011-12-26 05:54:56 +01:00
924944f607 write down some know-how regarding standard hash functions 2011-10-14 01:10:16 +02:00
64cf3c9d34 update GDB-pretty-printer HOWTO
Eclipse now supports structured display of STL containers
2011-08-25 03:03:43 +02:00
5487c244d6 small change to try the new menugen-auto-script
Signed-off-by: Ichthyostega <prg@ichthyostega.de>
2011-02-21 02:34:16 +01:00
Stefan Kangas
10766fe92a Replace several "Warning: Website under construction" with appropriate stubs. 2011-02-20 20:24:30 +01:00
21118d4831 Add a note about Python pretty printers in GDB 2011-01-07 18:03:26 +01:00