The basic of it all is called CONTAINER. It is a class / struct which can contain any data, of course also CONTAINERs. Examples are CONTAINERs which keep a bitmap, strings or just pointer to other CONTAINERs.
The solution I intend to create with all this is: several effect-programs called FX are called from main() in different times which are defined in a script. For example at time 0200 to 1480 there is FX1(with certain start parameters) called every Frame and from 0330 to 0900 FX2(with other start parameters), etc. It can happen that in a single frame the same FX (so teh same graphic function) is called two times, but those two FX/effects have a different state of variables. For that we must create something like our "stack", a CONTAINER which will keep all relevant data of a special FX for the next call.
An init of an FX (setting-up-everything-for-start) is called init_FX. It needs a special CONTAINER which contains only the relevant data for setting up an FX, that is called PRESET.
When my Screensaver-System starts up, there will be included alot FX (meaning functions which create graphical content) and for every such FX many different parameter-sets, the PRESETs. [I still think in detail about how to manage all that PRESET-data, so you dont need to think about it now.] When init_FX is called, it gets all needed data to start the FX in the PRESET(-container). The function init_FX is called only once for every new FX and it creates a new CONTAINER, the UNIT with all relevant data to save for that FX. A UNIT is a CONTAINER whcih saves all needed variables of a graphical function FX.