DAVIDOWITCH: no ano, na to se tu ptal i id REDGUY
víceméně, opustil jsem svoje plány na "pojmenované" paměťové kontexty (memory pooly) a rozhodl se, že ve většině případů potřebuju paměť v kontextech rememeber { } a forget { }, které se do sebe bude možné navíc vnořovat a které se budou vzájemně přebíjet.
není to žádný magic - uvnitř makra bude jediná jednoprůchodová for(;;) smyčka, která udělá nějakou inicializaci a nějakou deincializaci (je vtipné, kam všude dnes cpu cyklus for(), když prvních 10 let jsem v C programoval zarputile jen pomocí while() do { } while(), protože mi for() přišlo matoucí... a dodnes přijde, vždyť se taky "skutečné programování" snažím dělat zásadně jen pomocí for_each() :-) :-)
forget { forget { .... } } a remeber { remeber { .... } } jsou triviální případy ... jinak vnoření odlišného je taky téměř triviální:
remeber { a=nezahazuju; forget { b=zahazuju; remeber { c=nezahazuju; } d=zahazuju; } e=nezahazuju; }
a,c,e musí po vystoupení z vnějšího remember zůstat definované
b,d se uvolní v bodě, kde končí ten scope forget
atd.
toto je podle mě jednak fakt srozumitelné, jednak to musí být vnořovatelné (bude tam nějaká skrytá řídící globální proměnná, která řekne těm makrům, jaký je aktuální kontext), jednak je implementace téměř triviální (podotýkám téměř, protože ty memory pooly budou přeci jen řešené trochu komplexněji...)
původní plán byl na "pojmenované" a "nepojmenované" kontexty... ale postupem času mi došlo, že ty pojmenované jsou úplná blbost (nebo skoro úplná blbost - mají asi takové oprávnění, jako příkaz goto - který víceméně nemá moc oprávnění, pokud zavedeme systém odchycení a ošetření vyjímek ...)