blob: 5a957e3ec4cef0280162561c61ec4651426bffe3 [file] [log] [blame]
Zesstrab0b953f2018-08-30 23:55:28 +02001#pragma strong_types,rtt_checks
2
3inherit "/std/container";
4#include <moving.h>
5
Zesstrabc517a42018-12-02 20:26:38 +01006object cloner;
7
Zesstrab0b953f2018-08-30 23:55:28 +02008protected void create()
9{
Zesstrabc517a42018-12-02 20:26:38 +010010 cloner=previous_object();
Zesstrab0b953f2018-08-30 23:55:28 +020011 ::create();
12 // Das Objekt raeumt sich selber im reset auf. (D.h. kein Env-Check)
13 SetAutoObject(1);
14}
15
16// Dieses Objekt raeumt sich immer im ersten reset auf - es ist kurzlebig und
17// transient und Aenderungen an seinen Daten bleiben nicht erhalten.
18void reset()
19{
20 remove(1);
21}
22
23public varargs void init(object origin)
24{
25 // leer ueberschreiben. Das klingt abstrus, hat aber folgenden Hintergrund:
26 // dieses Objekt ist nicht dazu gedacht, in irgendeine Umgebung zu gelangen.
27 // Und selbst wenn das jemand mit M_NOCHECK tut, soll die Interaktion dieses
28 // Objekts mit anderen minimiert werden. Also keine Anmeldung von actions
29 // etc.
30}
31
32// Auch dies ist ungewoehnlich: Bewegung nie erlauben, daher eruebrigt sich
33// der Aufruf des geerbten PreventMove(). Auch wird M_NOCHECK nicht
34// beruecksichtigt... Don't do this anywhere else.
35protected int PreventMove(object dest, object oldenv, int method)
36{
37 return ME_NOT_ALLOWED;
38}
39
Zesstrabc517a42018-12-02 20:26:38 +010040public object *AllVirtualEnvironments()
41{
42 if (cloner)
43 {
44 object *cloner_envs = all_environment(cloner)
45 || cloner->AllVirtualEnvironments();
46 if (cloner_envs)
47 return ({cloner}) + cloner_envs;
48 return ({cloner});
49 }
50 return 0;
51}