Invocation: break-through with generic implementation
This changeset is a sketch how to switch the entire implementation of the ''Invocation Adatper'' over to a generic argument usage scheme. This requires the ability to - detect if some argument is actually a ''structured type'' - investigate components of such a structured type to draw a distinction between »Buffer« and »Parameter« - ''lift'' the implementation of simple values to work on tuples - provide a way to ''bridge'' from ''tuple-style'' programming to ''array access'' As a building block, we use a new iteration-over-index construct, based on an idea discussed in https://stackoverflow.com/q/53522781/444796 The trick is to pass a `std::integer_constant` to a λ-generic
This commit is contained in:
parent
23b4a54e79
commit
cf4bc380b0
4 changed files with 588 additions and 107 deletions
|
|
@ -116,24 +116,6 @@ namespace meta {
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
//////////////////////////TICKET #943 : temporary workaround until full C++14 compliance (need constexpr)
|
|
||||||
template<typename X>
|
|
||||||
constexpr inline X const&
|
|
||||||
max (X const& a, X const& b)
|
|
||||||
{
|
|
||||||
return a < b? b : a;
|
|
||||||
}
|
|
||||||
|
|
||||||
template<typename X>
|
|
||||||
constexpr inline X const&
|
|
||||||
min (X const& a, X const& b)
|
|
||||||
{
|
|
||||||
return b < a? b : a;
|
|
||||||
}
|
|
||||||
//////////////////////////TICKET #943 : temporary workaround until full C++14 compliance (need constexpr)
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -169,7 +151,7 @@ namespace meta {
|
||||||
using FilledWith = typename BuildIndexSeq<n-1>::template FilledWith<x>::template AppendElm<x>;
|
using FilledWith = typename BuildIndexSeq<n-1>::template FilledWith<x>::template AppendElm<x>;
|
||||||
|
|
||||||
template<size_t c>
|
template<size_t c>
|
||||||
using First = typename BuildIndexSeq<min(c,n)>::Ascending;
|
using First = typename BuildIndexSeq<std::min(c,n)>::Ascending;
|
||||||
|
|
||||||
template<size_t c>
|
template<size_t c>
|
||||||
using After = typename BuildIndexSeq< (n>c)? n-c : 0>::template OffsetBy<c>;
|
using After = typename BuildIndexSeq< (n>c)? n-c : 0>::template OffsetBy<c>;
|
||||||
|
|
@ -250,7 +232,6 @@ namespace meta {
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/* ==== Rebinding Variadic Arguments ==== **/
|
/* ==== Rebinding Variadic Arguments ==== **/
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -277,6 +258,65 @@ namespace meta {
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/* ==== Invoke with index from variadic ==== **/
|
||||||
|
|
||||||
|
/** helper to invoke a functor, passing instances of std::integral_constant
|
||||||
|
* @tparam N size of the index-sequence to use for instantiation
|
||||||
|
*/
|
||||||
|
template<size_t N>
|
||||||
|
class WithIdxSeq
|
||||||
|
{
|
||||||
|
template<class FUN, size_t...idx>
|
||||||
|
static void
|
||||||
|
invoke (FUN&& fun, std::index_sequence<idx...>)
|
||||||
|
{
|
||||||
|
(fun (std::integral_constant<size_t,idx>{}), ...);
|
||||||
|
}
|
||||||
|
|
||||||
|
public:
|
||||||
|
template<class FUN>
|
||||||
|
static void
|
||||||
|
invoke (FUN&& fun)
|
||||||
|
{
|
||||||
|
invoke (std::forward<FUN>(fun), std::make_index_sequence<N>{});
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Invoke a function (or λ) with index numbers derived from some variadic count.
|
||||||
|
* Notably this construct can be used for compile-time iteration over a structure.
|
||||||
|
* Instances of `std::integral_constant` are passed in sequence to the functor.
|
||||||
|
* The _size_ of the index sequence is derived from the following sources
|
||||||
|
* - if the type \a TTX is _tuple-like,_ then std::tuple_size<TTX> is used
|
||||||
|
* - otherwise, if the type is a loki-style type sequence or type list,
|
||||||
|
* the number of type nodes is used
|
||||||
|
* - otherwise, as fall-back the number of template parameters is used
|
||||||
|
*/
|
||||||
|
template<class TTX, class FUN>
|
||||||
|
inline void
|
||||||
|
forEachIDX (FUN&& fun)
|
||||||
|
{
|
||||||
|
auto N = []{
|
||||||
|
if constexpr (is_Structured<TTX>())
|
||||||
|
return size_t(std::tuple_size<TTX>::value);
|
||||||
|
else
|
||||||
|
if constexpr (lib::meta::is_Typelist<TTX>::value)
|
||||||
|
return lib::meta::count<typename TTX::List>::value;
|
||||||
|
else
|
||||||
|
{ // Fallback: rebind template arguments into a type sequence
|
||||||
|
using Seq = typename RebindVariadic<TySeq, TTX>::Type;
|
||||||
|
return size_t(count<typename Seq::List>::value);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
WithIdxSeq<N()>::invoke (std::forward<FUN> (fun));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -85,10 +85,14 @@
|
||||||
#include "lib/meta/function.hpp"
|
#include "lib/meta/function.hpp"
|
||||||
#include "lib/meta/trait.hpp"
|
#include "lib/meta/trait.hpp"
|
||||||
#include "lib/meta/typeseq-util.hpp"
|
#include "lib/meta/typeseq-util.hpp"
|
||||||
|
#include "lib/meta/variadic-helper.hpp"
|
||||||
|
#include "lib/meta/generator.hpp"
|
||||||
|
#include "lib/test/test-helper.hpp"
|
||||||
//#include "lib/several.hpp"
|
//#include "lib/several.hpp"
|
||||||
|
|
||||||
//#include <utility>
|
//#include <utility>
|
||||||
//#include <array>
|
//#include <array>
|
||||||
|
#include <tuple>
|
||||||
|
|
||||||
|
|
||||||
////////////////////////////////TICKET #826 12/2024 the invocation sequence has been reworked and reoriented for integration with the Scheduler
|
////////////////////////////////TICKET #826 12/2024 the invocation sequence has been reworked and reoriented for integration with the Scheduler
|
||||||
|
|
@ -108,8 +112,12 @@ namespace engine {
|
||||||
using std::remove_reference_t;
|
using std::remove_reference_t;
|
||||||
using lib::meta::enable_if;
|
using lib::meta::enable_if;
|
||||||
using lib::meta::is_Structured;
|
using lib::meta::is_Structured;
|
||||||
|
using lib::meta::forEachIDX;
|
||||||
|
using lib::meta::TySeq;
|
||||||
using std::is_pointer;
|
using std::is_pointer;
|
||||||
using std::is_reference;
|
using std::is_reference;
|
||||||
|
using std::remove_pointer_t;
|
||||||
|
using std::tuple_element_t;
|
||||||
using std::tuple_size_v;
|
using std::tuple_size_v;
|
||||||
using std::void_t;
|
using std::void_t;
|
||||||
using std::__and_;
|
using std::__and_;
|
||||||
|
|
@ -128,16 +136,66 @@ namespace engine {
|
||||||
|
|
||||||
template<typename B>
|
template<typename B>
|
||||||
struct is_Buffer
|
struct is_Buffer
|
||||||
: __and_<__not_<is_pointer<B>>
|
: __and_<is_pointer<B>
|
||||||
,__not_<is_reference<B>>
|
|
||||||
,std::is_default_constructible<B>
|
|
||||||
,__not_<_Fun<B>>
|
,__not_<_Fun<B>>
|
||||||
|
,std::is_default_constructible<remove_pointer_t<B>>
|
||||||
>
|
>
|
||||||
{ };
|
{ };
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
template<class TUP, template<class> class COND>
|
||||||
|
struct isAllElements
|
||||||
|
{
|
||||||
|
template<typename>
|
||||||
|
struct AndAll;
|
||||||
|
template<size_t...idx>
|
||||||
|
struct AndAll<std::index_sequence<idx...>>
|
||||||
|
{
|
||||||
|
static constexpr bool value =
|
||||||
|
__and_<COND<tuple_element_t<idx,TUP>> ...
|
||||||
|
>::value;
|
||||||
|
};
|
||||||
|
using Elms = std::make_index_sequence<tuple_size_v<TUP>>;
|
||||||
|
static constexpr bool value = AndAll<Elms>::value;
|
||||||
|
};
|
||||||
|
|
||||||
|
template<class TUP, typename SEL = void>
|
||||||
|
struct is_StructBuffs
|
||||||
|
: std::false_type
|
||||||
|
{ };
|
||||||
|
template<class TUP>
|
||||||
|
struct is_StructBuffs<TUP, enable_if<is_Structured<TUP>> >
|
||||||
|
: isAllElements<TUP, is_Buffer>
|
||||||
|
{ };
|
||||||
|
|
||||||
|
|
||||||
|
template<class X, typename SEL = void>
|
||||||
|
struct StructType
|
||||||
|
{
|
||||||
|
// static lib::test::TypeDebugger<X> kacki;
|
||||||
|
|
||||||
|
using Seq = TySeq<X>;
|
||||||
|
using Tup = std::tuple<X>;
|
||||||
|
};
|
||||||
|
|
||||||
|
template<class TUP>
|
||||||
|
struct StructType<TUP, enable_if<is_Structured<TUP>> >
|
||||||
|
{
|
||||||
|
// static lib::test::TypeDebugger<TUP> drecky;
|
||||||
|
|
||||||
|
template<typename>
|
||||||
|
struct AllZ;
|
||||||
|
template<size_t...idx>
|
||||||
|
struct AllZ<std::index_sequence<idx...>>
|
||||||
|
{
|
||||||
|
using Seq = TySeq<tuple_element_t<idx,TUP> ...>;
|
||||||
|
};
|
||||||
|
|
||||||
|
using Elms = std::make_index_sequence<tuple_size_v<TUP>>;
|
||||||
|
using Seq = typename AllZ<Elms>::Seq;
|
||||||
|
using Tup = TUP;
|
||||||
|
};
|
||||||
|
|
||||||
/** Helper to pick up the parameter dimensions from the processing function
|
/** Helper to pick up the parameter dimensions from the processing function
|
||||||
* @remark this is the rather simple yet common case that media processing
|
* @remark this is the rather simple yet common case that media processing
|
||||||
|
|
@ -170,18 +228,27 @@ namespace engine {
|
||||||
struct _ArgTrait<PAR, enable_if<is_Value<PAR>>>
|
struct _ArgTrait<PAR, enable_if<is_Value<PAR>>>
|
||||||
{
|
{
|
||||||
using Buff = PAR; ////////////////////////////////OOO not correct, remove this!
|
using Buff = PAR; ////////////////////////////////OOO not correct, remove this!
|
||||||
|
using Args = TySeq<PAR>;
|
||||||
enum{ SIZ = 1 };
|
enum{ SIZ = 1 };
|
||||||
};
|
};
|
||||||
template<class BUF>
|
template<class BUF>
|
||||||
struct _ArgTrait<BUF*, enable_if<is_Buffer<BUF>>>
|
struct _ArgTrait<BUF*, enable_if<is_Buffer<BUF*>>>
|
||||||
{
|
{
|
||||||
using Buff = BUF;
|
using Buff = BUF;
|
||||||
|
using Args = TySeq<BUF*>;
|
||||||
enum{ SIZ = 1 };
|
enum{ SIZ = 1 };
|
||||||
};
|
};
|
||||||
|
// template<class TUP>
|
||||||
|
// struct _ArgTrait<TUP, enable_if<is_StructBuffs<TUP>>>
|
||||||
|
// {
|
||||||
|
// using Args = typename StructType<TUP>::Seq;
|
||||||
|
// enum{ SIZ = std::tuple_size_v<TUP> };
|
||||||
|
// };
|
||||||
template<class BUF, size_t N>
|
template<class BUF, size_t N>
|
||||||
struct _ArgTrait<std::array<BUF*,N>>
|
struct _ArgTrait<std::array<BUF*,N>>
|
||||||
{
|
{
|
||||||
using Buff = BUF;
|
using Buff = BUF;
|
||||||
|
using Args = TySeq<BUF>;///////////////////////////OOO Schmuh!!!
|
||||||
enum{ SIZ = N };
|
enum{ SIZ = N };
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
@ -202,7 +269,7 @@ namespace engine {
|
||||||
struct _Case<SIG, enable_if<is_BinaryFun<SIG>>>
|
struct _Case<SIG, enable_if<is_BinaryFun<SIG>>>
|
||||||
{
|
{
|
||||||
enum{ SLOT_O = 1
|
enum{ SLOT_O = 1
|
||||||
, SLOT_I = is_Value<_Arg<SIG,0>>()? 1 : 0
|
, SLOT_I = is_StructBuffs<_Arg<SIG,0>>::value? 0 : 1 ////////OOO maybe derive directly from std::conditional?
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
template<class SIG>
|
template<class SIG>
|
||||||
|
|
@ -216,6 +283,9 @@ namespace engine {
|
||||||
using SigI = _Arg<FUN,_Case<Sig>::SLOT_I>;
|
using SigI = _Arg<FUN,_Case<Sig>::SLOT_I>;
|
||||||
using SigO = _Arg<FUN,_Case<Sig>::SLOT_O>;
|
using SigO = _Arg<FUN,_Case<Sig>::SLOT_O>;
|
||||||
using SigP = _Arg<FUN, 0>;
|
using SigP = _Arg<FUN, 0>;
|
||||||
|
using ArgI = typename _ArgTrait<SigI>::Args;
|
||||||
|
using ArgO = typename _ArgTrait<SigO>::Args;
|
||||||
|
using ArgP = typename _ArgTrait<SigP>::Args;
|
||||||
|
|
||||||
using BuffI = typename _ArgTrait<SigI>::Buff;
|
using BuffI = typename _ArgTrait<SigI>::Buff;
|
||||||
using BuffO = typename _ArgTrait<SigO>::Buff;
|
using BuffO = typename _ArgTrait<SigO>::Buff;
|
||||||
|
|
@ -238,7 +308,7 @@ namespace engine {
|
||||||
struct ParamStorage
|
struct ParamStorage
|
||||||
{
|
{
|
||||||
using ParSig = typename _ProcFun<FUN>::SigP;
|
using ParSig = typename _ProcFun<FUN>::SigP;
|
||||||
ParSig param;
|
ParSig param{};
|
||||||
};
|
};
|
||||||
|
|
||||||
template<class FUN>
|
template<class FUN>
|
||||||
|
|
@ -248,7 +318,7 @@ namespace engine {
|
||||||
using ArgSig = typename _ProcFun<FUN>::SigI;
|
using ArgSig = typename _ProcFun<FUN>::SigI;
|
||||||
|
|
||||||
BuffS inBuff;
|
BuffS inBuff;
|
||||||
ArgSig inArgs;
|
ArgSig inArgs{};
|
||||||
};
|
};
|
||||||
|
|
||||||
template<class FUN>
|
template<class FUN>
|
||||||
|
|
@ -258,7 +328,7 @@ namespace engine {
|
||||||
using ArgSig = typename _ProcFun<FUN>::SigO;
|
using ArgSig = typename _ProcFun<FUN>::SigO;
|
||||||
|
|
||||||
BuffS outBuff;
|
BuffS outBuff;
|
||||||
ArgSig outArgs;
|
ArgSig outArgs{};
|
||||||
};
|
};
|
||||||
|
|
||||||
template<class X>
|
template<class X>
|
||||||
|
|
@ -307,9 +377,78 @@ namespace engine {
|
||||||
: FeedManifold_StorageSetup<FUN>
|
: FeedManifold_StorageSetup<FUN>
|
||||||
{
|
{
|
||||||
using _Trait = _ProcFun<FUN>;
|
using _Trait = _ProcFun<FUN>;
|
||||||
|
using _F = FeedManifold;
|
||||||
|
|
||||||
static constexpr bool hasInput() { return _Trait::hasInput(); }
|
static constexpr bool hasInput() { return _Trait::hasInput(); }
|
||||||
static constexpr bool hasParam() { return _Trait::hasParam(); }
|
static constexpr bool hasParam() { return _Trait::hasParam(); }
|
||||||
|
|
||||||
|
using ArgI = typename _Trait::SigI;
|
||||||
|
using ArgO = typename _Trait::SigO;
|
||||||
|
enum{ FAN_I = _Trait::FAN_I
|
||||||
|
, FAN_O = _Trait::FAN_O
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
FUN process;
|
||||||
|
|
||||||
|
template<typename...INIT>
|
||||||
|
FeedManifold (INIT&& ...funSetup)
|
||||||
|
: process{forward<INIT> (funSetup)...}
|
||||||
|
{ }
|
||||||
|
|
||||||
|
|
||||||
|
using TupI = typename StructType<ArgI>::Tup;
|
||||||
|
using TupO = typename StructType<ArgO>::Tup;
|
||||||
|
|
||||||
|
template<size_t i, class ARG>
|
||||||
|
auto&
|
||||||
|
accessArg (ARG& arg)
|
||||||
|
{
|
||||||
|
if constexpr (is_Structured<ARG>())
|
||||||
|
return std::get<i> (arg);
|
||||||
|
else
|
||||||
|
return arg;
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
connect()
|
||||||
|
{
|
||||||
|
if constexpr (hasInput())
|
||||||
|
{
|
||||||
|
forEachIDX<TupI> ([&](auto i)
|
||||||
|
{
|
||||||
|
using BuffI = remove_pointer_t<tuple_element_t<i, TupI>>;
|
||||||
|
accessArg<i> (_F::inArgs) = & _F::inBuff[i].template accessAs<BuffI>();
|
||||||
|
});
|
||||||
|
// if constexpr (is_Structured<ArgI>())
|
||||||
|
// for (uint i=0; i<FAN_I; ++i)
|
||||||
|
// std::get<i> (_F::inArgs) = & _F::inBuff[i].template accessAs<BuffI>();
|
||||||
|
// else
|
||||||
|
// _F::inArgs = & _F::inBuff[0].template accessAs<BuffI>();
|
||||||
|
}
|
||||||
|
// always wire output buffer(s)
|
||||||
|
{
|
||||||
|
forEachIDX<TupO> ([&](auto i)
|
||||||
|
{
|
||||||
|
using BuffO = remove_pointer_t<tuple_element_t<i, TupO>>;
|
||||||
|
accessArg<i> (_F::outArgs) = & _F::outBuff[i].template accessAs<BuffO>();
|
||||||
|
});
|
||||||
|
// if constexpr (is_Structured<ArgO>())
|
||||||
|
// for (uint i=0; i<FAN_O; ++i)
|
||||||
|
// std::get<i> (_F::outArgs) = & _F::outBuff[i].template accessAs<BuffO>();
|
||||||
|
// else
|
||||||
|
// _F::outArgs = & _F::inBuff[0].template accessAs<BuffI>();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
invoke()
|
||||||
|
{
|
||||||
|
if constexpr (hasInput())
|
||||||
|
process (_F::inArgs, _F::outArgs);
|
||||||
|
else
|
||||||
|
process (_F::outArgs);
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -26,10 +26,13 @@
|
||||||
#include "steam/engine/diagnostic-buffer-provider.hpp"
|
#include "steam/engine/diagnostic-buffer-provider.hpp"
|
||||||
#include "steam/engine/buffhandle-attach.hpp"
|
#include "steam/engine/buffhandle-attach.hpp"
|
||||||
//#include "lib/format-cout.hpp"
|
//#include "lib/format-cout.hpp"
|
||||||
|
#include "lib/test/diagnostic-output.hpp"/////////////////////TODO
|
||||||
//#include "lib/util.hpp"
|
//#include "lib/util.hpp"
|
||||||
|
|
||||||
|
|
||||||
//using std::string;
|
//using std::string;
|
||||||
|
using std::tuple;/////////////TODO
|
||||||
|
using std::array;
|
||||||
|
|
||||||
|
|
||||||
namespace steam {
|
namespace steam {
|
||||||
|
|
@ -77,13 +80,20 @@ namespace test {
|
||||||
|
|
||||||
// Type setup to build a suitable FeedManifold
|
// Type setup to build a suitable FeedManifold
|
||||||
using Buffer = long;
|
using Buffer = long;
|
||||||
|
/////////////////////////////////////////////////////////////////////////////////TODO
|
||||||
|
using T1 = tuple<int,double>;
|
||||||
|
using T2 = array<int*,3>;
|
||||||
|
using T3 = int;
|
||||||
|
using T4 = int*;
|
||||||
|
using T5 = lib::HeteroData<int*>;
|
||||||
|
/////////////////////////////////////////////////////////////////////////////////TODO
|
||||||
auto fun_singleOut = [&](Buffer* buff) { *buff = r1; };
|
auto fun_singleOut = [&](Buffer* buff) { *buff = r1; };
|
||||||
using M1 = FeedManifold<decltype(fun_singleOut)>;
|
using M1 = FeedManifold<decltype(fun_singleOut)>;
|
||||||
CHECK (not M1::hasInput());
|
CHECK (not M1::hasInput());
|
||||||
CHECK (not M1::hasParam());
|
CHECK (not M1::hasParam());
|
||||||
M1 m1{};
|
M1 m1{fun_singleOut};
|
||||||
CHECK (1 == m1.outBuff.array().size());
|
CHECK (1 == m1.outBuff.array().size());
|
||||||
|
SHOW_EXPR(m1.outArgs)
|
||||||
CHECK (nullptr == m1.outArgs );
|
CHECK (nullptr == m1.outArgs );
|
||||||
// CHECK (m1.inArgs ); // does not compile because storage field is not provided
|
// CHECK (m1.inArgs ); // does not compile because storage field is not provided
|
||||||
// CHECK (m1.param );
|
// CHECK (m1.param );
|
||||||
|
|
@ -96,6 +106,16 @@ namespace test {
|
||||||
m1.outBuff.createAt (0, buff);
|
m1.outBuff.createAt (0, buff);
|
||||||
CHECK (m1.outBuff[0].isValid());
|
CHECK (m1.outBuff[0].isValid());
|
||||||
CHECK (m1.outBuff[0].accessAs<long>() == -55);
|
CHECK (m1.outBuff[0].accessAs<long>() == -55);
|
||||||
|
|
||||||
|
SHOW_TYPE(M1::ArgI)
|
||||||
|
SHOW_TYPE(M1::TupI)
|
||||||
|
SHOW_TYPE(M1::ArgO)
|
||||||
|
SHOW_TYPE(M1::TupO)
|
||||||
|
m1.connect();
|
||||||
|
SHOW_EXPR(m1.outArgs)
|
||||||
|
SHOW_EXPR(m1.outBuff[0])
|
||||||
|
SHOW_EXPR(util::showAdr(*buff))
|
||||||
|
SHOW_EXPR(util::showAdr(*m1.outBuff[0]))
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -24458,9 +24458,7 @@
|
||||||
<node CREATED="1582996768074" ID="ID_1685131335" MODIFIED="1582996782861" TEXT="bisheriger Profil-Trigger muß herausgelöst werden"/>
|
<node CREATED="1582996768074" ID="ID_1685131335" MODIFIED="1582996782861" TEXT="bisheriger Profil-Trigger muß herausgelöst werden"/>
|
||||||
<node CREATED="1582996783904" ID="ID_1435982546" MODIFIED="1583008976682" TEXT="ermittelte Größe muß vom Evaluation-Pass weiterverarbeitet werden">
|
<node CREATED="1582996783904" ID="ID_1435982546" MODIFIED="1583008976682" TEXT="ermittelte Größe muß vom Evaluation-Pass weiterverarbeitet werden">
|
||||||
<richcontent TYPE="NOTE"><html>
|
<richcontent TYPE="NOTE"><html>
|
||||||
<head>
|
<head/>
|
||||||
|
|
||||||
</head>
|
|
||||||
<body>
|
<body>
|
||||||
<p>
|
<p>
|
||||||
nicht mehr direkt auf den BodyCanvas als Größe anwenden
|
nicht mehr direkt auf den BodyCanvas als Größe anwenden
|
||||||
|
|
@ -25058,9 +25056,7 @@
|
||||||
<icon BUILTIN="button_ok"/>
|
<icon BUILTIN="button_ok"/>
|
||||||
<node CREATED="1612023464364" ID="ID_1135923056" MODIFIED="1612023511217" TEXT="Eingeführt durch Changeset 5b336054">
|
<node CREATED="1612023464364" ID="ID_1135923056" MODIFIED="1612023511217" TEXT="Eingeführt durch Changeset 5b336054">
|
||||||
<richcontent TYPE="NOTE"><html>
|
<richcontent TYPE="NOTE"><html>
|
||||||
<head>
|
<head/>
|
||||||
|
|
||||||
</head>
|
|
||||||
<body>
|
<body>
|
||||||
<p>
|
<p>
|
||||||
commit 5b33605469352f3403d44cb0d77ef3c224895f5b (HEAD, ichthyo/gui)
|
commit 5b33605469352f3403d44cb0d77ef3c224895f5b (HEAD, ichthyo/gui)
|
||||||
|
|
@ -25745,9 +25741,7 @@
|
||||||
<icon BUILTIN="flag-pink"/>
|
<icon BUILTIN="flag-pink"/>
|
||||||
<node CREATED="1563467519263" ID="ID_497587608" MODIFIED="1576282358071" TEXT="anders als der initiale Aufbau">
|
<node CREATED="1563467519263" ID="ID_497587608" MODIFIED="1576282358071" TEXT="anders als der initiale Aufbau">
|
||||||
<richcontent TYPE="NOTE"><html>
|
<richcontent TYPE="NOTE"><html>
|
||||||
<head>
|
<head/>
|
||||||
|
|
||||||
</head>
|
|
||||||
<body>
|
<body>
|
||||||
<p>
|
<p>
|
||||||
beim initialen Aufbau sitzen wir in einem ctor-Aufruf,
|
beim initialen Aufbau sitzen wir in einem ctor-Aufruf,
|
||||||
|
|
@ -26430,9 +26424,7 @@
|
||||||
<icon BUILTIN="button_ok"/>
|
<icon BUILTIN="button_ok"/>
|
||||||
<node CREATED="1582503411035" HGAP="45" ID="ID_1293494572" MODIFIED="1582503470645" TEXT="der Canvas braucht nur ein Widget, wir aber konstruieren einen Clip" VSHIFT="22">
|
<node CREATED="1582503411035" HGAP="45" ID="ID_1293494572" MODIFIED="1582503470645" TEXT="der Canvas braucht nur ein Widget, wir aber konstruieren einen Clip" VSHIFT="22">
|
||||||
<richcontent TYPE="NOTE"><html>
|
<richcontent TYPE="NOTE"><html>
|
||||||
<head>
|
<head/>
|
||||||
|
|
||||||
</head>
|
|
||||||
<body>
|
<body>
|
||||||
<p>
|
<p>
|
||||||
eigentlich brauchen wir den konkreten Typ nur für den ctor-Aufruf
|
eigentlich brauchen wir den konkreten Typ nur für den ctor-Aufruf
|
||||||
|
|
@ -27618,9 +27610,7 @@
|
||||||
<node CREATED="1678027936823" ID="ID_1498868700" MODIFIED="1678027946209" TEXT="attach|detach SubFork"/>
|
<node CREATED="1678027936823" ID="ID_1498868700" MODIFIED="1678027946209" TEXT="attach|detach SubFork"/>
|
||||||
<node CREATED="1678028843581" ID="ID_1168167530" MODIFIED="1678028951827" TEXT="überflüssig: bringt eigentlich nix">
|
<node CREATED="1678028843581" ID="ID_1168167530" MODIFIED="1678028951827" TEXT="überflüssig: bringt eigentlich nix">
|
||||||
<richcontent TYPE="NOTE"><html>
|
<richcontent TYPE="NOTE"><html>
|
||||||
<head>
|
<head/>
|
||||||
|
|
||||||
</head>
|
|
||||||
<body>
|
<body>
|
||||||
<p>
|
<p>
|
||||||
...denn wir müssen sowiso einen globalen Pass machen, und zwar erst spät, wenn das Layout bereits komplett geregelt ist
|
...denn wir müssen sowiso einen globalen Pass machen, und zwar erst spät, wenn das Layout bereits komplett geregelt ist
|
||||||
|
|
@ -28094,9 +28084,7 @@
|
||||||
</node>
|
</node>
|
||||||
<node CREATED="1677626098881" ID="ID_656135180" MODIFIED="1677626201096">
|
<node CREATED="1677626098881" ID="ID_656135180" MODIFIED="1677626201096">
|
||||||
<richcontent TYPE="NODE"><html>
|
<richcontent TYPE="NODE"><html>
|
||||||
<head>
|
<head/>
|
||||||
|
|
||||||
</head>
|
|
||||||
<body>
|
<body>
|
||||||
<p>
|
<p>
|
||||||
<u>gesucht...</u>
|
<u>gesucht...</u>
|
||||||
|
|
@ -29404,9 +29392,7 @@
|
||||||
</node>
|
</node>
|
||||||
<node CREATED="1560303861175" ID="ID_1281704590" MODIFIED="1576282358060" TEXT="Renderer ist ein einmal-wegwerf-Objekt">
|
<node CREATED="1560303861175" ID="ID_1281704590" MODIFIED="1576282358060" TEXT="Renderer ist ein einmal-wegwerf-Objekt">
|
||||||
<richcontent TYPE="NOTE"><html>
|
<richcontent TYPE="NOTE"><html>
|
||||||
<head>
|
<head/>
|
||||||
|
|
||||||
</head>
|
|
||||||
<body>
|
<body>
|
||||||
<p>
|
<p>
|
||||||
...daher die Factory
|
...daher die Factory
|
||||||
|
|
@ -32479,9 +32465,7 @@
|
||||||
</node>
|
</node>
|
||||||
<node COLOR="#435e98" CREATED="1564495803795" FOLDED="true" ID="ID_936454608" MODIFIED="1564932165356">
|
<node COLOR="#435e98" CREATED="1564495803795" FOLDED="true" ID="ID_936454608" MODIFIED="1564932165356">
|
||||||
<richcontent TYPE="NODE"><html>
|
<richcontent TYPE="NODE"><html>
|
||||||
<head>
|
<head/>
|
||||||
|
|
||||||
</head>
|
|
||||||
<body>
|
<body>
|
||||||
<p>
|
<p>
|
||||||
herausfinden, <i>warum </i>er solid gezeichnet wird
|
herausfinden, <i>warum </i>er solid gezeichnet wird
|
||||||
|
|
@ -34171,9 +34155,7 @@
|
||||||
<node CREATED="1611124983105" ID="ID_93713729" MODIFIED="1611124999600" TEXT="ggfs eine spezifische Verschiebung, die sich der Clip merkt"/>
|
<node CREATED="1611124983105" ID="ID_93713729" MODIFIED="1611124999600" TEXT="ggfs eine spezifische Verschiebung, die sich der Clip merkt"/>
|
||||||
<node COLOR="#435e98" CREATED="1611125005500" ID="ID_1031158985" MODIFIED="1611478790295" TEXT="Problem Koordinaten-System im Track-Canvas">
|
<node COLOR="#435e98" CREATED="1611125005500" ID="ID_1031158985" MODIFIED="1611478790295" TEXT="Problem Koordinaten-System im Track-Canvas">
|
||||||
<richcontent TYPE="NOTE"><html>
|
<richcontent TYPE="NOTE"><html>
|
||||||
<head>
|
<head/>
|
||||||
|
|
||||||
</head>
|
|
||||||
<body>
|
<body>
|
||||||
<p>
|
<p>
|
||||||
Problem wegen dem Overview-Ruler, d.h. wie berücksichtigt der untere Canvas die Ausdehnung des oberen Canvas?
|
Problem wegen dem Overview-Ruler, d.h. wie berücksichtigt der untere Canvas die Ausdehnung des oberen Canvas?
|
||||||
|
|
@ -35023,9 +35005,7 @@
|
||||||
<node CREATED="1586383139624" ID="ID_683488370" MODIFIED="1586383149522" TEXT="gegeben als TimeSpan"/>
|
<node CREATED="1586383139624" ID="ID_683488370" MODIFIED="1586383149522" TEXT="gegeben als TimeSpan"/>
|
||||||
<node CREATED="1586383150821" ID="ID_51987562" MODIFIED="1586383287858" TEXT="Übersetzung in Pixel ist rein Client-seitig">
|
<node CREATED="1586383150821" ID="ID_51987562" MODIFIED="1586383287858" TEXT="Übersetzung in Pixel ist rein Client-seitig">
|
||||||
<richcontent TYPE="NOTE"><html>
|
<richcontent TYPE="NOTE"><html>
|
||||||
<head>
|
<head/>
|
||||||
|
|
||||||
</head>
|
|
||||||
<body>
|
<body>
|
||||||
<p>
|
<p>
|
||||||
Zoomen, Scrollen, Scroll-Window und View-Path sind reine Gui-Bildungen und werden instantan ohne Round-Trip realisiert
|
Zoomen, Scrollen, Scroll-Window und View-Path sind reine Gui-Bildungen und werden instantan ohne Round-Trip realisiert
|
||||||
|
|
@ -36266,9 +36246,7 @@
|
||||||
<linktarget COLOR="#224e99" DESTINATION="ID_28088492" ENDARROW="Default" ENDINCLINATION="37;-48;" ID="Arrow_ID_550550684" SOURCE="ID_1891535415" STARTARROW="None" STARTINCLINATION="-151;-4;"/>
|
<linktarget COLOR="#224e99" DESTINATION="ID_28088492" ENDARROW="Default" ENDINCLINATION="37;-48;" ID="Arrow_ID_550550684" SOURCE="ID_1891535415" STARTARROW="None" STARTINCLINATION="-151;-4;"/>
|
||||||
<node CREATED="1533252951945" ID="ID_182447520" MODIFIED="1533252955015">
|
<node CREATED="1533252951945" ID="ID_182447520" MODIFIED="1533252955015">
|
||||||
<richcontent TYPE="NODE"><html>
|
<richcontent TYPE="NODE"><html>
|
||||||
<head>
|
<head/>
|
||||||
|
|
||||||
</head>
|
|
||||||
<body>
|
<body>
|
||||||
<p>
|
<p>
|
||||||
g_application_activate()
|
g_application_activate()
|
||||||
|
|
@ -37121,9 +37099,7 @@
|
||||||
<node CREATED="1614391269807" ID="ID_236795034" MODIFIED="1614391284866" TEXT="es wird Registrierung der genau passenden Rollen-Adapter unterstellt"/>
|
<node CREATED="1614391269807" ID="ID_236795034" MODIFIED="1614391284866" TEXT="es wird Registrierung der genau passenden Rollen-Adapter unterstellt"/>
|
||||||
<node CREATED="1614391304259" ID="ID_1592976230" MODIFIED="1614391351824" TEXT="es muß Verdrahtungs-Hooks geben">
|
<node CREATED="1614391304259" ID="ID_1592976230" MODIFIED="1614391351824" TEXT="es muß Verdrahtungs-Hooks geben">
|
||||||
<richcontent TYPE="NOTE"><html>
|
<richcontent TYPE="NOTE"><html>
|
||||||
<head>
|
<head/>
|
||||||
|
|
||||||
</head>
|
|
||||||
<body>
|
<body>
|
||||||
<p>
|
<p>
|
||||||
nachdem sich eine Instanz einer Rolle gemeldet hat, kann der Hook sie individuell verknüpfen, typischerweise als Lambda
|
nachdem sich eine Instanz einer Rolle gemeldet hat, kann der Hook sie individuell verknüpfen, typischerweise als Lambda
|
||||||
|
|
@ -37437,9 +37413,7 @@
|
||||||
</body>
|
</body>
|
||||||
</html></richcontent>
|
</html></richcontent>
|
||||||
<richcontent TYPE="NOTE"><html>
|
<richcontent TYPE="NOTE"><html>
|
||||||
<head>
|
<head/>
|
||||||
|
|
||||||
</head>
|
|
||||||
<body>
|
<body>
|
||||||
<p>
|
<p>
|
||||||
Warum möchte man denn überhaupt eine Geste "abbrechen können"?
|
Warum möchte man denn überhaupt eine Geste "abbrechen können"?
|
||||||
|
|
@ -37670,9 +37644,7 @@
|
||||||
<node CREATED="1616773839167" ID="ID_186857995" MODIFIED="1616773868828" TEXT="baut stets das Delegate from scratch"/>
|
<node CREATED="1616773839167" ID="ID_186857995" MODIFIED="1616773868828" TEXT="baut stets das Delegate from scratch"/>
|
||||||
<node CREATED="1616773969494" ID="ID_711732245" MODIFIED="1616773998586" TEXT="vereinfachte Logik für den Anzeigestil">
|
<node CREATED="1616773969494" ID="ID_711732245" MODIFIED="1616773998586" TEXT="vereinfachte Logik für den Anzeigestil">
|
||||||
<richcontent TYPE="NOTE"><html>
|
<richcontent TYPE="NOTE"><html>
|
||||||
<head>
|
<head/>
|
||||||
|
|
||||||
</head>
|
|
||||||
<body>
|
<body>
|
||||||
<p>
|
<p>
|
||||||
da man verschiedene Fälle hier zu beginn gleich ausschließen kann
|
da man verschiedene Fälle hier zu beginn gleich ausschließen kann
|
||||||
|
|
@ -55975,6 +55947,89 @@
|
||||||
</node>
|
</node>
|
||||||
</node>
|
</node>
|
||||||
</node>
|
</node>
|
||||||
|
<node CREATED="1734472826827" ID="ID_1739669703" MODIFIED="1734472937793" TEXT="generische Iteration">
|
||||||
|
<node COLOR="#435e98" CREATED="1734473802675" FOLDED="true" ID="ID_1446921071" MODIFIED="1734473919955" TEXT="forEach / mapEach">
|
||||||
|
<font BOLD="true" NAME="SansSerif" SIZE="12"/>
|
||||||
|
<node COLOR="#435e98" CREATED="1734473815969" ID="ID_550040594" MODIFIED="1734473900405" TEXT="Hintergrund">
|
||||||
|
<icon BUILTIN="info"/>
|
||||||
|
<node CREATED="1734473819557" ID="ID_1810634829" MODIFIED="1734473827564" TEXT="erstmals eingeführt im Yoshimi-Testrunner"/>
|
||||||
|
<node CREATED="1734473828359" ID="ID_1841645390" MODIFIED="1734473846344" TEXT="dann Frühjahr 2024 mit den CSV-Utils extrahiert"/>
|
||||||
|
<node CREATED="1734473851555" ID="ID_1042513204" MODIFIED="1734473892922" TEXT="man kann damit einfaches Processing per λ-generic auf Tuple-Elemente anwenden"/>
|
||||||
|
</node>
|
||||||
|
<node CREATED="1734473906427" ID="ID_757329242" MODIFIED="1734473913887" TEXT="definiert in tuple-helper.cpp"/>
|
||||||
|
</node>
|
||||||
|
<node COLOR="#435e98" CREATED="1734472833541" FOLDED="true" ID="ID_1252632465" MODIFIED="1734473957976" TEXT="forEachIDX">
|
||||||
|
<arrowlink COLOR="#3c85dc" DESTINATION="ID_1249171051" ENDARROW="Default" ENDINCLINATION="-2291;-794;" ID="Arrow_ID_987359602" STARTARROW="None" STARTINCLINATION="4755;992;"/>
|
||||||
|
<font BOLD="true" NAME="SansSerif" SIZE="12"/>
|
||||||
|
<node COLOR="#435e98" CREATED="1734472997687" ID="ID_1962370184" MODIFIED="1734473902629" TEXT="Hintergrund">
|
||||||
|
<icon BUILTIN="info"/>
|
||||||
|
<node CREATED="1734473017277" ID="ID_950616793" MODIFIED="1734473035190" TEXT="entwickelt 12/2024 für die FeedManifold in der Node-Invocation"/>
|
||||||
|
<node CREATED="1734473039049" ID="ID_241201979" MODIFIED="1734473231046">
|
||||||
|
<richcontent TYPE="NODE"><html>
|
||||||
|
<head/>
|
||||||
|
<body>
|
||||||
|
<p>
|
||||||
|
soll sowohl einfache Tyen, alsauch »<b>strukturierte Typen</b>« (tuple-like) akzeptieren
|
||||||
|
</p>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
</richcontent>
|
||||||
|
<richcontent TYPE="NOTE"><html>
|
||||||
|
<head/>
|
||||||
|
<body>
|
||||||
|
<p>
|
||||||
|
Konkret: man soll ein Binding auf eine Render-Node herstellen können von einer Funktion, die einfach einen Buffer-Pointer braucht. Aber aman soll auch Funktionen einbinden können, die zig verschiedene Eingabe- und Ausgabepuffer wollen, und dazu noch eine Menge an Parametern, die dann vielleicht auch noch per Automation zu versorgen sind
|
||||||
|
</p>
|
||||||
|
</body>
|
||||||
|
</html></richcontent>
|
||||||
|
</node>
|
||||||
|
<node CREATED="1734473066996" ID="ID_26414360" MODIFIED="1734473301381" TEXT="dann soll eine Brücke geschaffen werden zu einem Array-artigen Interface">
|
||||||
|
<richcontent TYPE="NOTE"><html>
|
||||||
|
<head/>
|
||||||
|
<body>
|
||||||
|
<p>
|
||||||
|
...denn die weitere Node-Invocation beruht auf rekursiven Aufrufen in Vorgänger-Nodes, die dann jeweils ein BuffHandle abliefern. Sowas möchte man schmerzfrei in eine Art Array abstellen können (wenngleich es auch in der Praxis als UninitialisedStorage implementiert ist)
|
||||||
|
</p>
|
||||||
|
</body>
|
||||||
|
</html></richcontent>
|
||||||
|
</node>
|
||||||
|
<node CREATED="1734473094120" ID="ID_1983060833" MODIFIED="1734473132885">
|
||||||
|
<richcontent TYPE="NODE"><html>
|
||||||
|
<head/>
|
||||||
|
<body>
|
||||||
|
<p>
|
||||||
|
deshalb ist es sinnvoll, einen λ-closed Code-Block <i>für jeden Index zu instantiieren</i>
|
||||||
|
</p>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
</richcontent>
|
||||||
|
</node>
|
||||||
|
</node>
|
||||||
|
<node CREATED="1734473468024" HGAP="41" ID="ID_1159486680" MODIFIED="1734473478720" TEXT="definiert in variadic-helper.cpp">
|
||||||
|
<node CREATED="1734473487117" ID="ID_1217556573" MODIFIED="1734473502095" TEXT="anwendbar für »tuple-like« types"/>
|
||||||
|
<node CREATED="1734473502803" ID="ID_67318567" MODIFIED="1734473509709" TEXT="oder für Loki-Typlisten"/>
|
||||||
|
<node CREATED="1734473510338" ID="ID_260827883" MODIFIED="1734473518373" TEXT="oder Templates mit N Template-Parametern"/>
|
||||||
|
</node>
|
||||||
|
<node CREATED="1734473317725" HGAP="81" ID="ID_1159300225" LINK="https://stackoverflow.com/q/53522781/444796" MODIFIED="1734473522786" TEXT="Grundidee" VSHIFT="-70">
|
||||||
|
<node CREATED="1734473328898" ID="ID_167026546" MODIFIED="1734473342551" TEXT="man verschafft sich eine Index-Sequenz aus »der Struktur«"/>
|
||||||
|
<node CREATED="1734473343280" ID="ID_41745089" MODIFIED="1734473374857" TEXT="man erzeugt daraus std::integer_constant<size_t, I>"/>
|
||||||
|
<node CREATED="1734473375908" ID="ID_1340474514" MODIFIED="1734473403444" TEXT="und gibt diese als Werte an ein λ-generic"/>
|
||||||
|
</node>
|
||||||
|
</node>
|
||||||
|
</node>
|
||||||
|
<node CREATED="1734474134102" FOLDED="true" ID="ID_1942900317" MODIFIED="1734474336372" TEXT="Hilfsmittel für Tuple-Protocol">
|
||||||
|
<node COLOR="#435e98" CREATED="1734474149788" ID="ID_1392132639" MODIFIED="1734474304945" TEXT="is_Structured">
|
||||||
|
<arrowlink COLOR="#65a0c8" DESTINATION="ID_1962318483" ENDARROW="Default" ENDINCLINATION="-561;59;" ID="Arrow_ID_1253919416" STARTARROW="None" STARTINCLINATION="4095;820;"/>
|
||||||
|
<node CREATED="1734474272972" HGAP="45" ID="ID_752241989" MODIFIED="1734474297902" TEXT="erkennt ob ein Typ std::tuple_size<T> unterstützt" VSHIFT="2">
|
||||||
|
<font NAME="SansSerif" SIZE="10"/>
|
||||||
|
</node>
|
||||||
|
</node>
|
||||||
|
<node COLOR="#435e98" CREATED="1734474159266" ID="ID_458414563" LINK="#ID_1710377001" MODIFIED="1734474304945" TEXT="StructType">
|
||||||
|
<node CREATED="1734474272972" HGAP="45" ID="ID_1114931809" MODIFIED="1734474326928" TEXT="»hebt« einen einfachen Typ in ein Tupel" VSHIFT="2">
|
||||||
|
<font NAME="SansSerif" SIZE="10"/>
|
||||||
|
</node>
|
||||||
|
</node>
|
||||||
|
</node>
|
||||||
<node CREATED="1697906135803" ID="ID_47415467" MODIFIED="1697927623614" TEXT="Function utils">
|
<node CREATED="1697906135803" ID="ID_47415467" MODIFIED="1697927623614" TEXT="Function utils">
|
||||||
<node BACKGROUND_COLOR="#c8c0b6" COLOR="#435e98" CREATED="1697906141042" FOLDED="true" ID="ID_334205441" MODIFIED="1697927708161" TEXT="lib::meta::_Fun">
|
<node BACKGROUND_COLOR="#c8c0b6" COLOR="#435e98" CREATED="1697906141042" FOLDED="true" ID="ID_334205441" MODIFIED="1697927708161" TEXT="lib::meta::_Fun">
|
||||||
<font BOLD="true" NAME="SansSerif" SIZE="12"/>
|
<font BOLD="true" NAME="SansSerif" SIZE="12"/>
|
||||||
|
|
@ -88484,7 +88539,7 @@ Date:   Thu Apr 20 18:53:17 2023 +0200<br/>
|
||||||
</node>
|
</node>
|
||||||
</node>
|
</node>
|
||||||
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1734310118603" ID="ID_1954508996" MODIFIED="1734310510263" TEXT="Feed-Manifold: Eigenschaften demonstrieren">
|
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1734310118603" ID="ID_1954508996" MODIFIED="1734310510263" TEXT="Feed-Manifold: Eigenschaften demonstrieren">
|
||||||
<linktarget COLOR="#406cd3" DESTINATION="ID_1954508996" ENDARROW="Default" ENDINCLINATION="-207;13;" ID="Arrow_ID_640616380" SOURCE="ID_1710382999" STARTARROW="None" STARTINCLINATION="-2974;268;"/>
|
<linktarget COLOR="#406cd3" DESTINATION="ID_1954508996" ENDARROW="Default" ENDINCLINATION="-484;30;" ID="Arrow_ID_640616380" SOURCE="ID_1710382999" STARTARROW="None" STARTINCLINATION="-2974;268;"/>
|
||||||
<icon BUILTIN="pencil"/>
|
<icon BUILTIN="pencil"/>
|
||||||
<node CREATED="1734310213994" ID="ID_691754137" MODIFIED="1734310241708" TEXT="mehrere Varianten von Funktions-Signaturen vorstellen">
|
<node CREATED="1734310213994" ID="ID_691754137" MODIFIED="1734310241708" TEXT="mehrere Varianten von Funktions-Signaturen vorstellen">
|
||||||
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1734310245306" ID="ID_1881940952" MODIFIED="1734310329959" TEXT="reiner Output mit einem Buffer">
|
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1734310245306" ID="ID_1881940952" MODIFIED="1734310329959" TEXT="reiner Output mit einem Buffer">
|
||||||
|
|
@ -88497,17 +88552,20 @@ Date:   Thu Apr 20 18:53:17 2023 +0200<br/>
|
||||||
<icon BUILTIN="flag-yellow"/>
|
<icon BUILTIN="flag-yellow"/>
|
||||||
</node>
|
</node>
|
||||||
</node>
|
</node>
|
||||||
<node CREATED="1734310333302" ID="ID_1944960168" MODIFIED="1734310341752" TEXT="jeweils eine Manifold erstellen"/>
|
<node COLOR="#338800" CREATED="1734310333302" ID="ID_1944960168" MODIFIED="1734391162068" TEXT="jeweils eine Manifold erstellen">
|
||||||
|
<icon BUILTIN="button_ok"/>
|
||||||
|
</node>
|
||||||
<node COLOR="#338800" CREATED="1734310343475" ID="ID_594704625" MODIFIED="1734389465766" TEXT="mit einem Test-BuffHandle beschicken">
|
<node COLOR="#338800" CREATED="1734310343475" ID="ID_594704625" MODIFIED="1734389465766" TEXT="mit einem Test-BuffHandle beschicken">
|
||||||
<icon BUILTIN="button_ok"/>
|
<icon BUILTIN="button_ok"/>
|
||||||
<node BACKGROUND_COLOR="#fafe99" COLOR="#fa002a" CREATED="1734310375328" ID="ID_126539331" MODIFIED="1734310384120" TEXT="Test-Setup funktioniert nicht">
|
<node COLOR="#435e98" CREATED="1734310375328" FOLDED="true" ID="ID_126539331" MODIFIED="1734391150786" TEXT="Test-Setup funktioniert nicht">
|
||||||
<icon BUILTIN="broken-line"/>
|
<icon BUILTIN="broken-line"/>
|
||||||
<node CREATED="1734310554672" ID="ID_1304749247" MODIFIED="1734310563567" TEXT="der Shortcut BufferProvider::lockBufferFor(args...)"/>
|
<node CREATED="1734310554672" ID="ID_1304749247" MODIFIED="1734310563567" TEXT="der Shortcut BufferProvider::lockBufferFor(args...)"/>
|
||||||
<node CREATED="1734310565998" ID="ID_1313467025" MODIFIED="1734310582156" TEXT="hatte ihn bisher stets ohne konkrete Argumente verwendet">
|
<node CREATED="1734310565998" ID="ID_1313467025" MODIFIED="1734310582156" TEXT="hatte ihn bisher stets ohne konkrete Argumente verwendet">
|
||||||
<icon BUILTIN="smiley-oh"/>
|
<icon BUILTIN="smiley-oh"/>
|
||||||
</node>
|
</node>
|
||||||
<node CREATED="1734310588763" ID="ID_1230270056" MODIFIED="1734310609188" TEXT="Implementierung erzeugt on-the-fly einen Binder">
|
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1734310588763" ID="ID_1230270056" MODIFIED="1734391140351" TEXT="Implementierung erzeugt on-the-fly einen Binder">
|
||||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1734310612849" ID="ID_433175533" MODIFIED="1734310625690" TEXT="Untersuchung">
|
<icon BUILTIN="info"/>
|
||||||
|
<node COLOR="#338800" CREATED="1734310612849" FOLDED="true" ID="ID_433175533" MODIFIED="1734391145334" TEXT="Untersuchung">
|
||||||
<icon BUILTIN="forward"/>
|
<icon BUILTIN="forward"/>
|
||||||
<node CREATED="1734310670231" ID="ID_179795775" MODIFIED="1734310853961" STYLE="bubble">
|
<node CREATED="1734310670231" ID="ID_179795775" MODIFIED="1734310853961" STYLE="bubble">
|
||||||
<richcontent TYPE="NODE"><html>
|
<richcontent TYPE="NODE"><html>
|
||||||
|
|
@ -88592,13 +88650,42 @@ Date:   Thu Apr 20 18:53:17 2023 +0200<br/>
|
||||||
<node COLOR="#5b280f" CREATED="1734311128476" ID="ID_1282234493" MODIFIED="1734311165943" TEXT="ich vestehe diese Typ-Signatur nicht">
|
<node COLOR="#5b280f" CREATED="1734311128476" ID="ID_1282234493" MODIFIED="1734311165943" TEXT="ich vestehe diese Typ-Signatur nicht">
|
||||||
<arrowlink COLOR="#a502af" DESTINATION="ID_1399777845" ENDARROW="Default" ENDINCLINATION="77;114;" ID="Arrow_ID_1332245965" STARTARROW="None" STARTINCLINATION="221;17;"/>
|
<arrowlink COLOR="#a502af" DESTINATION="ID_1399777845" ENDARROW="Default" ENDINCLINATION="77;114;" ID="Arrow_ID_1332245965" STARTARROW="None" STARTINCLINATION="221;17;"/>
|
||||||
<icon BUILTIN="stop-sign"/>
|
<icon BUILTIN="stop-sign"/>
|
||||||
|
<node CREATED="1734390596397" ID="ID_205739715" MODIFIED="1734390721967" TEXT="ist aber »irgendwie« korrekt">
|
||||||
|
<richcontent TYPE="NOTE"><html>
|
||||||
|
<head/>
|
||||||
|
<body>
|
||||||
|
<p>
|
||||||
|
will sagen ... das ist nicht das Problem; der Compiler macht hier eine verwirrende Transformation, die den Typ eines Funktionspointers mit Template-Argumenten instaniiert. Leider hat das aber zur Folge, daß man das eigentliche Problem nicht sieht (selbst wenn man endlos drauf starrt...)
|
||||||
|
</p>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
</richcontent>
|
||||||
</node>
|
</node>
|
||||||
<node CREATED="1734376827379" ID="ID_781787798" MODIFIED="1734376870062" TEXT="Analyse mit direktem Aufruf (try.cpp)">
|
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#802361" CREATED="1734390724212" HGAP="25" ID="ID_1829336783" MODIFIED="1734390924760" TEXT="(ja das tatsächliche Problem wäre hier versteckt gewesen)" VSHIFT="-15">
|
||||||
|
<richcontent TYPE="NOTE"><html>
|
||||||
|
<head/>
|
||||||
|
<body>
|
||||||
|
<p>
|
||||||
|
...aber aufgrund der sonderbaren Zuordnung praktisch nicht zu erkennen....
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
<u>Tip</u>: wir übergeben einen extra int-Parameter an eine Funktion, die auf einen in&& parametrisiert wurde
|
||||||
|
</p>
|
||||||
|
</body>
|
||||||
|
</html></richcontent>
|
||||||
|
<arrowlink COLOR="#f7dffd" DESTINATION="ID_217508249" ENDARROW="Default" ENDINCLINATION="420;13;" ID="Arrow_ID_1048587640" STARTARROW="None" STARTINCLINATION="171;10;"/>
|
||||||
|
<font NAME="SansSerif" SIZE="10"/>
|
||||||
|
<icon BUILTIN="smiley-angry"/>
|
||||||
|
</node>
|
||||||
|
</node>
|
||||||
|
<node BACKGROUND_COLOR="#c8c0b6" COLOR="#690f14" CREATED="1734376827379" ID="ID_781787798" MODIFIED="1734390938929" TEXT="Analyse mit direktem Aufruf (try.cpp)">
|
||||||
|
<icon BUILTIN="forward"/>
|
||||||
<node BACKGROUND_COLOR="#fefc4e" COLOR="#351d75" CREATED="1734376872367" ID="ID_1505723613" MODIFIED="1734376903471" TEXT="reproduzierbar">
|
<node BACKGROUND_COLOR="#fefc4e" COLOR="#351d75" CREATED="1734376872367" ID="ID_1505723613" MODIFIED="1734376903471" TEXT="reproduzierbar">
|
||||||
<font BOLD="true" NAME="SansSerif" SIZE="12"/>
|
<font BOLD="true" NAME="SansSerif" SIZE="12"/>
|
||||||
<icon BUILTIN="idea"/>
|
<icon BUILTIN="idea"/>
|
||||||
</node>
|
</node>
|
||||||
<node CREATED="1734376912301" HGAP="30" ID="ID_1396318540" MODIFIED="1734377033194" TEXT="Problem liegt am bind()-Ausdruck" VSHIFT="19">
|
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1734376912301" HGAP="30" ID="ID_1396318540" MODIFIED="1734390959612" TEXT="Problem liegt am bind()-Ausdruck" VSHIFT="19">
|
||||||
|
<icon BUILTIN="idea"/>
|
||||||
<node CREATED="1734376971625" ID="ID_1500057972" MODIFIED="1734376981959" TEXT="nur die Variante ohne weitere Argumente funktioniert"/>
|
<node CREATED="1734376971625" ID="ID_1500057972" MODIFIED="1734376981959" TEXT="nur die Variante ohne weitere Argumente funktioniert"/>
|
||||||
<node CREATED="1734376982941" ID="ID_1093169887" MODIFIED="1734377042591" TEXT="funktioniert auch nicht wenn man die Variadics wegläßt"/>
|
<node CREATED="1734376982941" ID="ID_1093169887" MODIFIED="1734377042591" TEXT="funktioniert auch nicht wenn man die Variadics wegläßt"/>
|
||||||
<node CREATED="1734377003920" ID="ID_1513970872" MODIFIED="1734377047351" TEXT="funktioniert auch nicht wenn man jedwede Templates wegläßt"/>
|
<node CREATED="1734377003920" ID="ID_1513970872" MODIFIED="1734377047351" TEXT="funktioniert auch nicht wenn man jedwede Templates wegläßt"/>
|
||||||
|
|
@ -88615,8 +88702,7 @@ Date:   Thu Apr 20 18:53:17 2023 +0200<br/>
|
||||||
Aufgerufen: <font face="Monospaced">(std::_Bind<void (*(std::_Placeholder<1>, int))(void*, int&&)>) (void*&)</font>
|
Aufgerufen: <font face="Monospaced">(std::_Bind<void (*(std::_Placeholder<1>, int))(void*, int&&)>) (void*&)</font>
|
||||||
</p>
|
</p>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html></richcontent>
|
||||||
</richcontent>
|
|
||||||
</node>
|
</node>
|
||||||
<node CREATED="1734378022592" ID="ID_1829030870" MODIFIED="1734378077075">
|
<node CREATED="1734378022592" ID="ID_1829030870" MODIFIED="1734378077075">
|
||||||
<richcontent TYPE="NODE"><html>
|
<richcontent TYPE="NODE"><html>
|
||||||
|
|
@ -88656,13 +88742,32 @@ Date:   Thu Apr 20 18:53:17 2023 +0200<br/>
|
||||||
Beobachtung: <font face="Monospaced">_Functor(_Bound_args ...)</font>
|
Beobachtung: <font face="Monospaced">_Functor(_Bound_args ...)</font>
|
||||||
</p>
|
</p>
|
||||||
</body>
|
</body>
|
||||||
|
</html></richcontent>
|
||||||
|
<node CREATED="1734378654651" ID="ID_461500481" MODIFIED="1734391082365">
|
||||||
|
<richcontent TYPE="NODE"><html>
|
||||||
|
<head/>
|
||||||
|
<body>
|
||||||
|
<p>
|
||||||
|
void (*(std::_Placeholder<1>, int))(void*, <b><font color="#e00219">int&&</font></b>)
|
||||||
|
</p>
|
||||||
|
</body>
|
||||||
</html>
|
</html>
|
||||||
</richcontent>
|
</richcontent>
|
||||||
<node CREATED="1734378654651" ID="ID_461500481" MODIFIED="1734378710056" TEXT="void (*(std::_Placeholder<1>, int))(void*, int&&)"/>
|
</node>
|
||||||
<node BACKGROUND_COLOR="#f8f1cb" COLOR="#a50125" CREATED="1734378652331" ID="ID_804249162" MODIFIED="1734378687327" TEXT="≠">
|
<node BACKGROUND_COLOR="#f8f1cb" COLOR="#a50125" CREATED="1734378652331" ID="ID_804249162" MODIFIED="1734378687327" TEXT="≠">
|
||||||
<font NAME="SansSerif" SIZE="14"/>
|
<font NAME="SansSerif" SIZE="14"/>
|
||||||
</node>
|
</node>
|
||||||
<node CREATED="1734378600970" ID="ID_1568813709" MODIFIED="1734378712108" TEXT="(void (*)(void*, int&&)) (std::_Placeholder<1>, int)"/>
|
<node CREATED="1734378600970" ID="ID_1568813709" MODIFIED="1734391062488">
|
||||||
|
<richcontent TYPE="NODE"><html>
|
||||||
|
<head/>
|
||||||
|
<body>
|
||||||
|
<p>
|
||||||
|
(void (*)(void*, int&&)) (std::_Placeholder<1>, <b><font color="#a90404">int</font></b>)
|
||||||
|
</p>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
</richcontent>
|
||||||
|
</node>
|
||||||
</node>
|
</node>
|
||||||
<node COLOR="#5b280f" CREATED="1734380583440" ID="ID_944972328" MODIFIED="1734386726726" TEXT="Nein! das ist es nicht">
|
<node COLOR="#5b280f" CREATED="1734380583440" ID="ID_944972328" MODIFIED="1734386726726" TEXT="Nein! das ist es nicht">
|
||||||
<arrowlink COLOR="#5b3840" DESTINATION="ID_544743170" ENDARROW="Default" ENDINCLINATION="119;6;" ID="Arrow_ID_662126387" STARTARROW="None" STARTINCLINATION="-86;10;"/>
|
<arrowlink COLOR="#5b3840" DESTINATION="ID_544743170" ENDARROW="Default" ENDINCLINATION="119;6;" ID="Arrow_ID_662126387" STARTARROW="None" STARTINCLINATION="-86;10;"/>
|
||||||
|
|
@ -88680,7 +88785,7 @@ Date:   Thu Apr 20 18:53:17 2023 +0200<br/>
|
||||||
</node>
|
</node>
|
||||||
</node>
|
</node>
|
||||||
</node>
|
</node>
|
||||||
<node CREATED="1734382759141" ID="ID_1882396684" MODIFIED="1734386826582" TEXT="Minimales Beispiel">
|
<node BACKGROUND_COLOR="#c8c0b6" COLOR="#435e98" CREATED="1734382759141" ID="ID_1882396684" MODIFIED="1734390967611" TEXT="Minimales Beispiel">
|
||||||
<icon BUILTIN="info"/>
|
<icon BUILTIN="info"/>
|
||||||
<node CREATED="1734383075588" ID="ID_1238945155" MODIFIED="1734383114465" STYLE="bubble">
|
<node CREATED="1734383075588" ID="ID_1238945155" MODIFIED="1734383114465" STYLE="bubble">
|
||||||
<richcontent TYPE="NODE"><html>
|
<richcontent TYPE="NODE"><html>
|
||||||
|
|
@ -88739,8 +88844,7 @@ Date:   Thu Apr 20 18:53:17 2023 +0200<br/>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html></richcontent>
|
||||||
</richcontent>
|
|
||||||
</node>
|
</node>
|
||||||
<node BACKGROUND_COLOR="#efb775" COLOR="#fa002a" CREATED="1734383189560" ID="ID_1267982630" MODIFIED="1734386862320" TEXT="Problem reproduzierbar mit neuesten Compilern">
|
<node BACKGROUND_COLOR="#efb775" COLOR="#fa002a" CREATED="1734383189560" ID="ID_1267982630" MODIFIED="1734386862320" TEXT="Problem reproduzierbar mit neuesten Compilern">
|
||||||
<icon BUILTIN="broken-line"/>
|
<icon BUILTIN="broken-line"/>
|
||||||
|
|
@ -88749,10 +88853,20 @@ Date:   Thu Apr 20 18:53:17 2023 +0200<br/>
|
||||||
</node>
|
</node>
|
||||||
</node>
|
</node>
|
||||||
</node>
|
</node>
|
||||||
<node BACKGROUND_COLOR="#fafe99" COLOR="#fa002a" CREATED="1734385893133" ID="ID_1856944234" MODIFIED="1734385928505" TEXT="Ursache: Binder liefert eine Kopie">
|
<node BACKGROUND_COLOR="#f1be85" COLOR="#900148" CREATED="1734385893133" ID="ID_1856944234" MODIFIED="1734391010205">
|
||||||
|
<richcontent TYPE="NODE"><html>
|
||||||
|
<head/>
|
||||||
|
<body>
|
||||||
|
<p>
|
||||||
|
<u>Ursache</u>: Binder liefert eine <b>Kopie</b>
|
||||||
|
</p>
|
||||||
|
</body>
|
||||||
|
</html></richcontent>
|
||||||
|
<font NAME="SansSerif" SIZE="12"/>
|
||||||
<icon BUILTIN="broken-line"/>
|
<icon BUILTIN="broken-line"/>
|
||||||
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1734381356576" ID="ID_217508249" MODIFIED="1734386742771" TEXT="...und die gebundene Funktion wurde aber für RValues instantiiert">
|
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1734381356576" ID="ID_217508249" MODIFIED="1734386742771" TEXT="...und die gebundene Funktion wurde aber für RValues instantiiert">
|
||||||
<linktarget COLOR="#fde3e9" DESTINATION="ID_217508249" ENDARROW="Default" ENDINCLINATION="464;20;" ID="Arrow_ID_891244985" SOURCE="ID_944972328" STARTARROW="None" STARTINCLINATION="-86;10;"/>
|
<linktarget COLOR="#fde3e9" DESTINATION="ID_217508249" ENDARROW="Default" ENDINCLINATION="464;20;" ID="Arrow_ID_891244985" SOURCE="ID_944972328" STARTARROW="None" STARTINCLINATION="-86;10;"/>
|
||||||
|
<linktarget COLOR="#f7dffd" DESTINATION="ID_217508249" ENDARROW="Default" ENDINCLINATION="420;13;" ID="Arrow_ID_1048587640" SOURCE="ID_1829336783" STARTARROW="None" STARTINCLINATION="171;10;"/>
|
||||||
<icon BUILTIN="broken-line"/>
|
<icon BUILTIN="broken-line"/>
|
||||||
</node>
|
</node>
|
||||||
<node CREATED="1734385977834" ID="ID_1426672931" MODIFIED="1734385991397" TEXT="Das ist wohl ein inhärentes Problem">
|
<node CREATED="1734385977834" ID="ID_1426672931" MODIFIED="1734385991397" TEXT="Das ist wohl ein inhärentes Problem">
|
||||||
|
|
@ -88768,8 +88882,7 @@ Date:   Thu Apr 20 18:53:17 2023 +0200<br/>
|
||||||
also: <font face="Monospaced">func<</font><font face="Monospaced" color="#612549">ARGS</font><font face="Monospaced" color="#ed0212"><b>&</b></font><font face="Monospaced"> ...></font>
|
also: <font face="Monospaced">func<</font><font face="Monospaced" color="#612549">ARGS</font><font face="Monospaced" color="#ed0212"><b>&</b></font><font face="Monospaced"> ...></font>
|
||||||
</p>
|
</p>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html></richcontent>
|
||||||
</richcontent>
|
|
||||||
<linktarget COLOR="#f7fdca" DESTINATION="ID_1179078617" ENDARROW="Default" ENDINCLINATION="-159;21;" ID="Arrow_ID_1473711263" SOURCE="ID_314389327" STARTARROW="None" STARTINCLINATION="22;-36;"/>
|
<linktarget COLOR="#f7fdca" DESTINATION="ID_1179078617" ENDARROW="Default" ENDINCLINATION="-159;21;" ID="Arrow_ID_1473711263" SOURCE="ID_314389327" STARTARROW="None" STARTINCLINATION="22;-36;"/>
|
||||||
</node>
|
</node>
|
||||||
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#bd000b" CREATED="1734386778574" ID="ID_233689242" MODIFIED="1734386807216" TEXT="(funktioniert natürlich nicht mit allen Typen...)">
|
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#bd000b" CREATED="1734386778574" ID="ID_233689242" MODIFIED="1734386807216" TEXT="(funktioniert natürlich nicht mit allen Typen...)">
|
||||||
|
|
@ -91751,6 +91864,46 @@ Date:   Thu Apr 20 18:53:17 2023 +0200<br/>
|
||||||
</node>
|
</node>
|
||||||
<node CREATED="1734300344699" ID="ID_660526050" MODIFIED="1734300363029" TEXT="strukturierte Typen in einem zweiten Schritt hinzufügen"/>
|
<node CREATED="1734300344699" ID="ID_660526050" MODIFIED="1734300363029" TEXT="strukturierte Typen in einem zweiten Schritt hinzufügen"/>
|
||||||
</node>
|
</node>
|
||||||
|
<node CREATED="1734458417453" ID="ID_1458239434" MODIFIED="1734458430809" TEXT="struktuierte Argumente korrekt klassifizieren">
|
||||||
|
<node BACKGROUND_COLOR="#f0d5c5" COLOR="#990033" CREATED="1734458433484" ID="ID_569916262" MODIFIED="1734458448795" TEXT="Frage: wie umgehen mit leeren Strukturen?">
|
||||||
|
<icon BUILTIN="help"/>
|
||||||
|
<node CREATED="1734458451019" ID="ID_522884490" LINK="https://math.stackexchange.com/a/3634823" MODIFIED="1734458500305" TEXT="Logik: leere Konjunktion ≡ true">
|
||||||
|
<icon BUILTIN="info"/>
|
||||||
|
</node>
|
||||||
|
<node CREATED="1734458527530" ID="ID_1065531651" MODIFIED="1734458570509">
|
||||||
|
<richcontent TYPE="NODE"><html>
|
||||||
|
<head/>
|
||||||
|
<body>
|
||||||
|
<p>
|
||||||
|
man könnte nun sagen: <i>det sollen se halt nit machen!</i>
|
||||||
|
</p>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
</richcontent>
|
||||||
|
</node>
|
||||||
|
<node CREATED="1734458587984" ID="ID_402660303" MODIFIED="1734458899210" TEXT="sekundäre Schwierigkeit: wir klassifizieren die Use-Cases anhand der »Art« eines Arguments">
|
||||||
|
<richcontent TYPE="NOTE"><html>
|
||||||
|
<head/>
|
||||||
|
<body>
|
||||||
|
<p>
|
||||||
|
bedeutet, wir „biegen“ dann in einem Fall, nämlich wenn nur zwei Argumente gegeben sind, jeweils zwangsläufig in einer bestimmten Richtung ab, je nachdem ob eine leere Struct als <i>wahr gilt; </i>
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
Beispielsweise in der aktuellen Logik prüfen wir ob der 1.Slot ein »Valu« ist, was dann bei einer leeren Struct dazu führen würde, diese als ein leeres Param-Tupel zu behandeln. Kommt dann darauf an, ob das tatsächlich einen Schaden im Code anrichtet, oder auch <i>leer durchläuft.</i> Denn an sich sollte es ja egal sein, sofern dann nur dieser Slot auch tatsächlich keine Behandlung bekommt
|
||||||
|
</p>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
</richcontent>
|
||||||
|
<icon BUILTIN="forward"/>
|
||||||
|
</node>
|
||||||
|
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1734458906909" ID="ID_53372671" MODIFIED="1734458916675" TEXT="später nochmal beurteilen">
|
||||||
|
<icon BUILTIN="hourglass"/>
|
||||||
|
</node>
|
||||||
|
</node>
|
||||||
|
</node>
|
||||||
</node>
|
</node>
|
||||||
<node CREATED="1734299615144" ID="ID_1061968970" MODIFIED="1734299633817" TEXT="Umgang mit komplexen Argumenten">
|
<node CREATED="1734299615144" ID="ID_1061968970" MODIFIED="1734299633817" TEXT="Umgang mit komplexen Argumenten">
|
||||||
<node COLOR="#5b280f" CREATED="1734299635613" ID="ID_1256304259" MODIFIED="1734299646473" TEXT="Fallunterscheidung Tupel und Array">
|
<node COLOR="#5b280f" CREATED="1734299635613" ID="ID_1256304259" MODIFIED="1734299646473" TEXT="Fallunterscheidung Tupel und Array">
|
||||||
|
|
@ -91890,9 +92043,9 @@ Date:   Thu Apr 20 18:53:17 2023 +0200<br/>
|
||||||
</node>
|
</node>
|
||||||
</node>
|
</node>
|
||||||
</node>
|
</node>
|
||||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1734214260094" ID="ID_1731140529" MODIFIED="1734214303534" TEXT="muß die Storage neu bestimmen">
|
<node COLOR="#435e98" CREATED="1734214260094" ID="ID_1731140529" MODIFIED="1734397828794" TEXT="muß die Storage neu bestimmen">
|
||||||
<icon BUILTIN="yes"/>
|
<icon BUILTIN="yes"/>
|
||||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1734214271580" ID="ID_1045815708" MODIFIED="1734299228970" TEXT="Nochmal über die Rolle der FeedManifold nachdenken">
|
<node COLOR="#435e98" CREATED="1734214271580" ID="ID_1045815708" MODIFIED="1734397811621" TEXT="Nochmal über die Rolle der FeedManifold nachdenken">
|
||||||
<linktarget COLOR="#2e2c57" DESTINATION="ID_1045815708" ENDARROW="Default" ENDINCLINATION="-98;-400;" ID="Arrow_ID_639104343" SOURCE="ID_525858909" STARTARROW="None" STARTINCLINATION="-367;14;"/>
|
<linktarget COLOR="#2e2c57" DESTINATION="ID_1045815708" ENDARROW="Default" ENDINCLINATION="-98;-400;" ID="Arrow_ID_639104343" SOURCE="ID_525858909" STARTARROW="None" STARTINCLINATION="-367;14;"/>
|
||||||
<icon BUILTIN="yes"/>
|
<icon BUILTIN="yes"/>
|
||||||
<node CREATED="1734214319422" ID="ID_405803529" MODIFIED="1734214333944" TEXT="sie ist und bleibt die dynamische Invocation-Storage"/>
|
<node CREATED="1734214319422" ID="ID_405803529" MODIFIED="1734214333944" TEXT="sie ist und bleibt die dynamische Invocation-Storage"/>
|
||||||
|
|
@ -91955,7 +92108,9 @@ Date:   Thu Apr 20 18:53:17 2023 +0200<br/>
|
||||||
</node>
|
</node>
|
||||||
</node>
|
</node>
|
||||||
</node>
|
</node>
|
||||||
<node CREATED="1734226154995" ID="ID_1824135693" MODIFIED="1734226165663" TEXT="Konsequenzen">
|
<node COLOR="#435e98" CREATED="1734226154995" ID="ID_1824135693" MODIFIED="1734397838296" TEXT="Konsequenzen">
|
||||||
|
<font BOLD="true" NAME="SansSerif" SIZE="12"/>
|
||||||
|
<icon BUILTIN="forward"/>
|
||||||
<node CREATED="1734226167432" ID="ID_152918477" MODIFIED="1734226177431" TEXT="FeedManifold ist der InvocationAdapter"/>
|
<node CREATED="1734226167432" ID="ID_152918477" MODIFIED="1734226177431" TEXT="FeedManifold ist der InvocationAdapter"/>
|
||||||
<node CREATED="1734226179091" ID="ID_656635473" MODIFIED="1734226192693" TEXT="Parametrisiert wird mit dem konkreten Funktor"/>
|
<node CREATED="1734226179091" ID="ID_656635473" MODIFIED="1734226192693" TEXT="Parametrisiert wird mit dem konkreten Funktor"/>
|
||||||
<node CREATED="1734226218750" ID="ID_1815522792" MODIFIED="1734226239453" TEXT="daraus muß sich FeedManifold komplett selbst konfigurieren"/>
|
<node CREATED="1734226218750" ID="ID_1815522792" MODIFIED="1734226239453" TEXT="daraus muß sich FeedManifold komplett selbst konfigurieren"/>
|
||||||
|
|
@ -91965,10 +92120,10 @@ Date:   Thu Apr 20 18:53:17 2023 +0200<br/>
|
||||||
</node>
|
</node>
|
||||||
</node>
|
</node>
|
||||||
</node>
|
</node>
|
||||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1734226596427" ID="ID_1730595360" MODIFIED="1734226615270" TEXT="Struktur neu aufbauen">
|
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1734226596427" ID="ID_1730595360" MODIFIED="1734397856015" TEXT="Struktur neu aufbauen">
|
||||||
<icon BUILTIN="flag-yellow"/>
|
<icon BUILTIN="pencil"/>
|
||||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1734226295084" ID="ID_43554059" MODIFIED="1734226617257" TEXT="FeedManifold wird aus mehreren Layern zusammengesetzt">
|
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1734226295084" ID="ID_43554059" MODIFIED="1734397850135" TEXT="FeedManifold wird aus mehreren Layern zusammengesetzt">
|
||||||
<icon BUILTIN="flag-yellow"/>
|
<icon BUILTIN="pencil"/>
|
||||||
<node CREATED="1734226447447" ID="ID_1121321956" MODIFIED="1734226473215" TEXT="Param-Storage (optional)"/>
|
<node CREATED="1734226447447" ID="ID_1121321956" MODIFIED="1734226473215" TEXT="Param-Storage (optional)"/>
|
||||||
<node CREATED="1734226474754" ID="ID_334989563" MODIFIED="1734226483630" TEXT="Input-Storage (optional)"/>
|
<node CREATED="1734226474754" ID="ID_334989563" MODIFIED="1734226483630" TEXT="Input-Storage (optional)"/>
|
||||||
<node CREATED="1734226485049" ID="ID_1102989908" MODIFIED="1734226491735" TEXT="Output-Storage (mandatory)"/>
|
<node CREATED="1734226485049" ID="ID_1102989908" MODIFIED="1734226491735" TEXT="Output-Storage (mandatory)"/>
|
||||||
|
|
@ -91987,11 +92142,11 @@ Date:   Thu Apr 20 18:53:17 2023 +0200<br/>
|
||||||
<icon BUILTIN="flag-yellow"/>
|
<icon BUILTIN="flag-yellow"/>
|
||||||
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1734282520970" ID="ID_1381423523" MODIFIED="1734282533060" TEXT="Aufgabe: flexible Storage-Struktur bereitstellen">
|
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1734282520970" ID="ID_1381423523" MODIFIED="1734282533060" TEXT="Aufgabe: flexible Storage-Struktur bereitstellen">
|
||||||
<icon BUILTIN="pencil"/>
|
<icon BUILTIN="pencil"/>
|
||||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1734282535179" ID="ID_1723358537" MODIFIED="1734282603738" TEXT="läuft wohl hinaus auf ein compile-time conditional mix-in">
|
<node COLOR="#435e98" CREATED="1734282535179" ID="ID_1723358537" MODIFIED="1734397871068" TEXT="läuft wohl hinaus auf ein compile-time conditional mix-in">
|
||||||
<icon BUILTIN="idea"/>
|
<icon BUILTIN="idea"/>
|
||||||
</node>
|
</node>
|
||||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1734282677568" ID="ID_1599850203" MODIFIED="1734282692157" TEXT="Konfigurations-Basis-Klasse dazwischen schalten">
|
<node COLOR="#338800" CREATED="1734282677568" ID="ID_1599850203" MODIFIED="1734397868364" TEXT="Konfigurations-Basis-Klasse dazwischen schalten">
|
||||||
<icon BUILTIN="flag-yellow"/>
|
<icon BUILTIN="button_ok"/>
|
||||||
</node>
|
</node>
|
||||||
</node>
|
</node>
|
||||||
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1734282698342" ID="ID_1166367446" MODIFIED="1734283404476" TEXT="Aufgabe: Konstruktor-Parameter hängen von der Konfiguration ab">
|
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1734282698342" ID="ID_1166367446" MODIFIED="1734283404476" TEXT="Aufgabe: Konstruktor-Parameter hängen von der Konfiguration ab">
|
||||||
|
|
@ -92053,15 +92208,141 @@ Date:   Thu Apr 20 18:53:17 2023 +0200<br/>
|
||||||
<icon BUILTIN="flag-yellow"/>
|
<icon BUILTIN="flag-yellow"/>
|
||||||
<node CREATED="1734397915749" ID="ID_1226245371" MODIFIED="1734397929207" TEXT="muß Prädikate auf alle Typen anwenden"/>
|
<node CREATED="1734397915749" ID="ID_1226245371" MODIFIED="1734397929207" TEXT="muß Prädikate auf alle Typen anwenden"/>
|
||||||
<node CREATED="1734397930454" ID="ID_1067248557" MODIFIED="1734397961120" TEXT="brauche Operation über Elemente eines strukturierten Typs"/>
|
<node CREATED="1734397930454" ID="ID_1067248557" MODIFIED="1734397961120" TEXT="brauche Operation über Elemente eines strukturierten Typs"/>
|
||||||
<node CREATED="1734403556414" ID="ID_971023481" MODIFIED="1734403580870" TEXT="muß dazu den Einzelfall-Typ auf einen structured-Type »heben«">
|
<node CREATED="1734397967893" ID="ID_662205800" MODIFIED="1734398257368" TEXT="der forEach-Apply-Trick funktioniert auf structuredTypes">
|
||||||
<node CREATED="1734403583091" ID="ID_1710377001" MODIFIED="1734403593253" TEXT="StructType<TY>">
|
<icon BUILTIN="idea"/>
|
||||||
|
</node>
|
||||||
|
<node CREATED="1734398073088" ID="ID_1873421349" MODIFIED="1734398086312" TEXT="muß aber auf Array-Elemente zugreifen">
|
||||||
|
<node CREATED="1734398091309" ID="ID_448809561" MODIFIED="1734398115209" TEXT="Subscript in die Buffer-Table">
|
||||||
|
<icon BUILTIN="info"/>
|
||||||
|
<node COLOR="#435e98" CREATED="1734398117130" ID="ID_288959672" MODIFIED="1734398124401" TEXT="sinnvoll?">
|
||||||
|
<node CREATED="1734398126369" ID="ID_1110387551" MODIFIED="1734398142107" TEXT="stellt eine Brücke dar für downstream-Code"/>
|
||||||
|
<node CREATED="1734398143406" ID="ID_1350915295" MODIFIED="1734398156440" TEXT="dieser kann dann eine einfache Array-Iteration machen"/>
|
||||||
|
<node CREATED="1734398157764" ID="ID_110363632" MODIFIED="1734398171805" TEXT="im Besonderen: rekursive Calls..."/>
|
||||||
|
</node>
|
||||||
|
</node>
|
||||||
|
</node>
|
||||||
|
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1734398371276" ID="ID_1513818427" MODIFIED="1734474043348" TEXT="brauche forEach(IndexTuple)">
|
||||||
|
<icon BUILTIN="yes"/>
|
||||||
|
<node CREATED="1734399341087" ID="ID_763559603" MODIFIED="1734399361894" TEXT="sollte aber auch für frei stehenden Einzeltyp funktionieren"/>
|
||||||
|
<node COLOR="#5b280f" CREATED="1734399363642" ID="ID_535610409" MODIFIED="1734471924041" TEXT="Verwende das gute alte InstantiateWithIndex aus generator.hpp">
|
||||||
|
<icon BUILTIN="button_cancel"/>
|
||||||
|
<node CREATED="1734399387338" ID="ID_683945175" MODIFIED="1734399397194" TEXT="ja ... die guten alten Loki-Listen"/>
|
||||||
|
<node CREATED="1734399405485" ID="ID_676422515" MODIFIED="1734399426829" TEXT="brauche dazu dann nur die Typ-Sequenz für einen structuredType"/>
|
||||||
|
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1734471930599" ID="ID_885074382" MODIFIED="1734471957968" TEXT="muß dafür aber eine relativ komplexe Intantiierungs-Konvention einführen">
|
||||||
|
<icon BUILTIN="smily_bad"/>
|
||||||
|
</node>
|
||||||
|
</node>
|
||||||
|
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1734399930258" ID="ID_552320825" MODIFIED="1734471981106" TEXT="oder doch nur einen Index-Generator ⟶ λ">
|
||||||
|
<icon BUILTIN="yes"/>
|
||||||
|
<node BACKGROUND_COLOR="#f0d5c5" COLOR="#990033" CREATED="1734471983248" ID="ID_180764617" MODIFIED="1734472002527" TEXT="geht das überhaupt mit einem Lambda?">
|
||||||
|
<font NAME="SansSerif" SIZE="12"/>
|
||||||
|
<icon BUILTIN="help"/>
|
||||||
|
<node COLOR="#5b280f" CREATED="1734472004853" ID="ID_1548338453" MODIFIED="1734472034734" TEXT="im Body wird der Index als constexpr gebraucht">
|
||||||
|
<icon BUILTIN="closed"/>
|
||||||
|
</node>
|
||||||
|
<node CREATED="1734472037144" ID="ID_465893949" MODIFIED="1734472072711" TEXT="brauche also wohl doch einen speziellen Template-Extension-point..."/>
|
||||||
|
<node BACKGROUND_COLOR="#ede3b1" COLOR="#690f14" CREATED="1734472074252" ID="ID_97193324" MODIFIED="1734472273486" TEXT="DOCH ⟶ es geht!">
|
||||||
|
<icon BUILTIN="idea"/>
|
||||||
|
<node CREATED="1734472095569" ID="ID_1467523521" LINK="https://stackoverflow.com/q/53522781/444796" MODIFIED="1734472125384" TEXT="Trick auf Stackoverflow gefunden"/>
|
||||||
|
<node COLOR="#435e98" CREATED="1734472185682" ID="ID_1287540275" MODIFIED="1734472207270" TEXT="man gibt dem Lambda eine std::integer_constant">
|
||||||
|
<icon BUILTIN="idea"/>
|
||||||
|
</node>
|
||||||
|
<node BACKGROUND_COLOR="#cab3d2" COLOR="#a6086b" CREATED="1734472140658" ID="ID_1563109849" MODIFIED="1734472237864" TEXT="da muß man erst mal drauf kommen!!!">
|
||||||
|
<richcontent TYPE="NOTE"><html>
|
||||||
|
<head/>
|
||||||
|
<body>
|
||||||
|
<p>
|
||||||
|
Hut ab für den Poster auf Stackoverflow: der hat diese Möglichkeit gesehen und ist dann nur an ein paar Kleinigkeiten gescheitert.
|
||||||
|
</p>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
</richcontent>
|
||||||
|
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
|
||||||
|
</node>
|
||||||
|
</node>
|
||||||
|
</node>
|
||||||
|
<node COLOR="#338800" CREATED="1734472285111" ID="ID_576227286" MODIFIED="1734473972771" TEXT="in generischen Library-Helper einbauen">
|
||||||
|
<icon BUILTIN="yes"/>
|
||||||
|
<node CREATED="1734472314563" ID="ID_878985358" MODIFIED="1734472355171" TEXT="weil — muß hier Komplexität verbergen">
|
||||||
|
<richcontent TYPE="NOTE"><html>
|
||||||
|
<head/>
|
||||||
|
<body>
|
||||||
|
<p>
|
||||||
|
sonst dreht »man« (≙ich) noch durch...
|
||||||
|
</p>
|
||||||
|
</body>
|
||||||
|
</html></richcontent>
|
||||||
|
</node>
|
||||||
|
<node CREATED="1734472364508" ID="ID_1969110660" MODIFIED="1734472377795" TEXT="und sieht im Moment tatsächlich nach etwas Nützlichem aus"/>
|
||||||
|
<node CREATED="1734472387069" ID="ID_1245131792" MODIFIED="1734472415065" TEXT="wähle die Struktur «Template + Funktions-front-end»"/>
|
||||||
|
<node COLOR="#435e98" CREATED="1734472416485" ID="ID_564026816" MODIFIED="1734472668891" TEXT="aber wohin damit??">
|
||||||
|
<icon BUILTIN="help"/>
|
||||||
|
<node CREATED="1734472427460" ID="ID_453448134" MODIFIED="1734472439094" TEXT="naheliegend wären die tuple-helper"/>
|
||||||
|
<node CREATED="1734472440504" ID="ID_288639764" MODIFIED="1734472480555" TEXT="ich möchte aber keinen #import <tuple>">
|
||||||
|
<richcontent TYPE="NOTE"><html>
|
||||||
|
<head/>
|
||||||
|
<body>
|
||||||
|
<p>
|
||||||
|
...denn diese Mechanik ist im Grunde komplett unabhängig von Tuples (oder auch sonstigen Strukturen)
|
||||||
|
</p>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
</richcontent>
|
||||||
|
</node>
|
||||||
|
<node COLOR="#5b280f" CREATED="1734472482636" ID="ID_1888534617" MODIFIED="1734472501560" TEXT="könnte sogar in meta/utils">
|
||||||
|
<icon BUILTIN="stop-sign"/>
|
||||||
|
<node COLOR="#8a2763" CREATED="1734472505467" HGAP="25" ID="ID_1535049858" MODIFIED="1734472529217" TEXT="die werden langsam zu fett..." VSHIFT="9">
|
||||||
|
<font NAME="SansSerif" SIZE="9"/>
|
||||||
|
</node>
|
||||||
|
</node>
|
||||||
|
<node COLOR="#435e98" CREATED="1734472534622" ID="ID_929896284" MODIFIED="1734472663473" TEXT="dann wohl ehr zu den variadic-helpern?">
|
||||||
|
<icon BUILTIN="yes"/>
|
||||||
|
<node CREATED="1734472551411" ID="ID_193385433" MODIFIED="1734472563445" TEXT="hat aber überhaupt keinen Bezug zu »Variadics«"/>
|
||||||
|
<node CREATED="1734472566033" ID="ID_653891510" MODIFIED="1734472579115" TEXT="sondern verwendet das C++ tuple-Protokoll"/>
|
||||||
|
<node COLOR="#435e98" CREATED="1734472580559" ID="ID_267621132" MODIFIED="1734472599967" TEXT="dann „schaffen“ wir eben einen Bezug">
|
||||||
|
<icon BUILTIN="yes"/>
|
||||||
|
</node>
|
||||||
|
<node COLOR="#435e98" CREATED="1734472602340" ID="ID_399912585" MODIFIED="1734472651061" TEXT="magische Varianten">
|
||||||
|
<icon BUILTIN="idea"/>
|
||||||
|
<node CREATED="1734472615890" ID="ID_1127700750" MODIFIED="1734472622189" TEXT="verwendet Tuple-Protokll"/>
|
||||||
|
<node CREATED="1734472623499" ID="ID_1086241536" MODIFIED="1734472636588" TEXT="verwendet Länge einer Loki-Liste"/>
|
||||||
|
<node CREATED="1734472637935" ID="ID_785815106" MODIFIED="1734472646649" TEXT="zählt Anzahl an Template-Argumenten"/>
|
||||||
|
</node>
|
||||||
|
</node>
|
||||||
|
<node CREATED="1734472673374" ID="ID_1249171051" MODIFIED="1734473957976">
|
||||||
|
<richcontent TYPE="NODE"><html>
|
||||||
|
<head/>
|
||||||
|
<body>
|
||||||
|
<p>
|
||||||
|
<font color="#837070" face="Monospaced">lib::meta::</font><font color="#3c2980" face="Monospaced"><b>forEachIDX</b></font><font color="#837070" face="Monospaced"><</font><font color="#8f224f" face="Monospaced">T</font><font color="#837070" face="Monospaced">> ( </font><font color="#783d34" face="Monospaced"><b>λ </b></font><font color="#837070" face="Monospaced">)</font>
|
||||||
|
</p>
|
||||||
|
</body>
|
||||||
|
</html></richcontent>
|
||||||
|
<linktarget COLOR="#3c85dc" DESTINATION="ID_1249171051" ENDARROW="Default" ENDINCLINATION="-2291;-794;" ID="Arrow_ID_987359602" SOURCE="ID_1252632465" STARTARROW="None" STARTINCLINATION="4755;992;"/>
|
||||||
|
<icon BUILTIN="forward"/>
|
||||||
|
<node CREATED="1734472882847" ID="ID_533227992" MODIFIED="1734472892441" TEXT="der Funktor bekommt compile-time-Konstanten"/>
|
||||||
|
<node CREATED="1734472894029" ID="ID_120767076" MODIFIED="1734472902507" TEXT="er kann damit Templates Instantiieren"/>
|
||||||
|
</node>
|
||||||
|
</node>
|
||||||
|
</node>
|
||||||
|
</node>
|
||||||
|
<node COLOR="#338800" CREATED="1734473996312" ID="ID_970193220" MODIFIED="1734474093813" TEXT="zusammen mit einem Access-Helper ⟹ Basis-Funktionalität bereitgestellt">
|
||||||
|
<linktarget COLOR="#419bab" DESTINATION="ID_970193220" ENDARROW="Default" ENDINCLINATION="7;120;" ID="Arrow_ID_633874673" SOURCE="ID_971023481" STARTARROW="None" STARTINCLINATION="30;-94;"/>
|
||||||
|
<icon BUILTIN="button_ok"/>
|
||||||
|
</node>
|
||||||
|
</node>
|
||||||
|
<node CREATED="1734403556414" ID="ID_971023481" MODIFIED="1734474109401" TEXT="muß dazu den Einzelfall-Typ auf einen structured-Type »heben«">
|
||||||
|
<arrowlink COLOR="#419bab" DESTINATION="ID_970193220" ENDARROW="Default" ENDINCLINATION="7;120;" ID="Arrow_ID_633874673" STARTARROW="None" STARTINCLINATION="30;-94;"/>
|
||||||
|
<node COLOR="#338800" CREATED="1734403583091" ID="ID_1710377001" MODIFIED="1734474118087" TEXT="StructType<TY>">
|
||||||
|
<icon BUILTIN="button_ok"/>
|
||||||
<node COLOR="#435e98" CREATED="1734403595048" ID="ID_496079267" MODIFIED="1734450365546" TEXT="spricht falsch an im Compile">
|
<node COLOR="#435e98" CREATED="1734403595048" ID="ID_496079267" MODIFIED="1734450365546" TEXT="spricht falsch an im Compile">
|
||||||
<icon BUILTIN="broken-line"/>
|
<icon BUILTIN="broken-line"/>
|
||||||
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#a6086b" CREATED="1734403634332" ID="ID_817342705" MODIFIED="1734450390281" TEXT="funktioniert enable_if<is_Structured<long*> > korrekt?"/>
|
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1734403634332" ID="ID_817342705" MODIFIED="1734451117928" TEXT="funktioniert enable_if<is_Structured<long*> > korrekt?"/>
|
||||||
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1734450087903" ID="ID_1588306692" MODIFIED="1734450379412" TEXT="is_Structured war naiv implementiert">
|
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1734450087903" ID="ID_1588306692" MODIFIED="1734450379412" TEXT="is_Structured war naiv implementiert">
|
||||||
<icon BUILTIN="broken-line"/>
|
<icon BUILTIN="broken-line"/>
|
||||||
</node>
|
</node>
|
||||||
<node COLOR="#338800" CREATED="1734450102857" ID="ID_1962318483" MODIFIED="1734450109137" TEXT="versuche es besser...">
|
<node COLOR="#338800" CREATED="1734450102857" ID="ID_1962318483" MODIFIED="1734474259663" TEXT="versuche es besser...">
|
||||||
|
<linktarget COLOR="#65a0c8" DESTINATION="ID_1962318483" ENDARROW="Default" ENDINCLINATION="-561;59;" ID="Arrow_ID_1253919416" SOURCE="ID_1392132639" STARTARROW="None" STARTINCLINATION="4095;820;"/>
|
||||||
<icon BUILTIN="button_ok"/>
|
<icon BUILTIN="button_ok"/>
|
||||||
<node COLOR="#5b280f" CREATED="1734450111282" ID="ID_1778075632" MODIFIED="1734450135378" TEXT="das ganze »tuple-protocol« abprüfen">
|
<node COLOR="#5b280f" CREATED="1734450111282" ID="ID_1778075632" MODIFIED="1734450135378" TEXT="das ganze »tuple-protocol« abprüfen">
|
||||||
<icon BUILTIN="button_cancel"/>
|
<icon BUILTIN="button_cancel"/>
|
||||||
|
|
@ -92078,9 +92359,7 @@ Date:   Thu Apr 20 18:53:17 2023 +0200<br/>
|
||||||
<node COLOR="#435e98" CREATED="1734450281377" ID="ID_258396157" MODIFIED="1734450319901" TEXT="ein enable_if-Variante dazu"/>
|
<node COLOR="#435e98" CREATED="1734450281377" ID="ID_258396157" MODIFIED="1734450319901" TEXT="ein enable_if-Variante dazu"/>
|
||||||
<node COLOR="#435e98" CREATED="1734450289604" ID="ID_1035452314" MODIFIED="1734450357273" TEXT="getestet mit verschiedenen Typen">
|
<node COLOR="#435e98" CREATED="1734450289604" ID="ID_1035452314" MODIFIED="1734450357273" TEXT="getestet mit verschiedenen Typen">
|
||||||
<richcontent TYPE="NOTE"><html>
|
<richcontent TYPE="NOTE"><html>
|
||||||
<head>
|
<head/>
|
||||||
|
|
||||||
</head>
|
|
||||||
<body>
|
<body>
|
||||||
<p>
|
<p>
|
||||||
MetaUtils_test::detect_tupleProtocol()
|
MetaUtils_test::detect_tupleProtocol()
|
||||||
|
|
@ -92092,6 +92371,9 @@ Date:   Thu Apr 20 18:53:17 2023 +0200<br/>
|
||||||
</node>
|
</node>
|
||||||
</node>
|
</node>
|
||||||
</node>
|
</node>
|
||||||
|
<node COLOR="#338800" CREATED="1734457614086" ID="ID_1045658856" MODIFIED="1734457639968" TEXT="Geprüft: StructType<T> verhält sich nun wie erwartet">
|
||||||
|
<icon BUILTIN="button_ok"/>
|
||||||
|
</node>
|
||||||
</node>
|
</node>
|
||||||
</node>
|
</node>
|
||||||
</node>
|
</node>
|
||||||
|
|
@ -92160,7 +92442,7 @@ Date:   Thu Apr 20 18:53:17 2023 +0200<br/>
|
||||||
<icon BUILTIN="button_cancel"/>
|
<icon BUILTIN="button_cancel"/>
|
||||||
</node>
|
</node>
|
||||||
<node CREATED="1734309990069" ID="ID_1710382999" MODIFIED="1734310510263" TEXT="angesiedelt in NodeBase_test">
|
<node CREATED="1734309990069" ID="ID_1710382999" MODIFIED="1734310510263" TEXT="angesiedelt in NodeBase_test">
|
||||||
<arrowlink COLOR="#406cd3" DESTINATION="ID_1954508996" ENDARROW="Default" ENDINCLINATION="-207;13;" ID="Arrow_ID_640616380" STARTARROW="None" STARTINCLINATION="-2974;268;"/>
|
<arrowlink COLOR="#406cd3" DESTINATION="ID_1954508996" ENDARROW="Default" ENDINCLINATION="-484;30;" ID="Arrow_ID_640616380" STARTARROW="None" STARTINCLINATION="-2974;268;"/>
|
||||||
<linktarget COLOR="#16a2aa" DESTINATION="ID_1710382999" ENDARROW="Default" ENDINCLINATION="539;-32;" ID="Arrow_ID_129574515" SOURCE="ID_1348489291" STARTARROW="None" STARTINCLINATION="183;11;"/>
|
<linktarget COLOR="#16a2aa" DESTINATION="ID_1710382999" ENDARROW="Default" ENDINCLINATION="539;-32;" ID="Arrow_ID_129574515" SOURCE="ID_1348489291" STARTARROW="None" STARTINCLINATION="183;11;"/>
|
||||||
<icon BUILTIN="info"/>
|
<icon BUILTIN="info"/>
|
||||||
</node>
|
</node>
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue