blob: 2c14554fd8bc7eeb07334d40fe8538b0837e75f8 [file] [log] [blame]
MG Mud User88f12472016-06-24 23:31:02 +02001SYNOPSIS
Zesstrad59c3892019-11-28 20:53:39 +01002 #include <include_list.h>
MG Mud User88f12472016-06-24 23:31:02 +02003
Zesstrad59c3892019-11-28 20:53:39 +01004 string * include_list()
Zesstra5481d492021-04-08 20:07:06 +02005 string * include_list(object|lwobject ob)
6 string * include_list(object|lwobject ob, int flags)
MG Mud User88f12472016-06-24 23:31:02 +02007
8BESCHREIBUNG
9 Diese Funktion liefert Informationen ueber alle Dateien, die bei der
10 Kompilierung von <ob> in dieses Objekt eingebunden wurden, inklusive
11 den Programmnamen von <ob>. Wird <ob> nicht angegeben, wird
12 standardmaessig das aktuelle Objekt verwendet.
13
14 Im resultierenden Array besteht die Information zu einem Includefile
15 aus drei Elementen:
16 - string [i+0]: der Name des Includefiles, wie er im Programm
17 auftaucht, inklusive den Trennzeichen wie " " oder
18 < >.
19 - string [i+1]: der absolute Dateipfad des Includefiles.
20 - int [i+2]: die Tiefe der Inklusion (gewoehnlich 1, fuer
21 verschachtelte Includes auch groesser als 1)
22
23 Der erste Eintrag im Resultat ist der Name des Programmes selbst in
24 [i+0], die anderen beiden Elemente [i+1] und [i+2] sind 0.
25
26 <flag> bezeichnet die Struktur des Ergebnisses:
27 - <flag> = INCLIST_FLAT (0, Standard):
28 Das Resultat ist ein flaches Array. Der erste Eintrag bezeichnet
29 <ob> selbst, die restlichen Eintraege bezeichnen alle Includefiles
30 in der Reihenfolge, in der sie auftreten.
31 - <flag> = INCLIST_TREE (1):
32 Das Resultat ist ein Array, dessen erster Eintrag das Objekt <ob>
33 selbst bezeichnet. Alle folgenden Eintraege bezeichnen die
34 Includefiles von <ob>. Wenn ein Includefile von <ob> selbst keine
35 Includefiles hat, wird seine Information direkt im Array
36 gespeichert. Fuer verschachtelte Includefiles wird ein Untervektor
37 erzeugt und dann in diesem Untervektor abgespeichert (wiederum
38 in [i+0], [i+1] und [i+2] sind 0). Diese Untervektoren haben
39 die gleiche Struktur wie das Resultatarray.
40
Zesstrad59c3892019-11-28 20:53:39 +010041 Wenn ein Objekt inklusive <ob> einem replace_program() unterworfen
MG Mud User88f12472016-06-24 23:31:02 +020042 war, spiegeln die gelieferten Dateinamen das effektiv aktive Programm
43 wider.
44
45 Die Includepfade, die geliefert werden, beginnen immer mit '/'
46 (absolute Pfade), auch wenn der Treiber im COMPAT Modus laeuft.
47 Trotzdem beginnt der tatsaechliche Dateiname nicht mit einem '/',
48 wenn der Treiber im COMPAT Modus laeuft.
49
Zesstrad59c3892019-11-28 20:53:39 +010050
51BEISPIELE
MG Mud User88f12472016-06-24 23:31:02 +020052 Dieser Code erzeugt (mit /sys als Includeverzeichnis des Systems):
53
54 a.c: #include "b.h"
55 #include <c.h>
56 b.h: #include "d.h"
57 c.h: #define BAR
58 d.h: #define FOO
59
60 Die Efun liefert drei Resultate:
61
62 include_list(a, INCLIST_FLAT)
63 -> ({ "a.c", 0, 0
64 , "\"b.h\"", "/.../b.h", 1
65 , "\"d.h\"", "/.../d.h", 2
66 , "<c.h>", "/sys/c.h", 1
67 })
68
69 include_list(a, INCLIST_TREE)
70 -> ({ "a.c", 0, 0
71 , ({ "\"b.h\"", "/.../b.h", 1
72 , "\"d.h\"", "/.../d.h", 2
73 }), 0, 0
74 , "<c.h>", "/sys/c.h", 1
75 })
76
Zesstrad59c3892019-11-28 20:53:39 +010077GESCHICHTE
78 Eingefuehrt in LDMud 3.2.9, 3.3.128.
MG Mud User88f12472016-06-24 23:31:02 +020079
80SIEHE AUCH
81 debug_info(E), inherit_list(E)