blob: cc44fa9f6296be60b2662c972d2ebc8685e8d4b6 [file] [log] [blame]
MG Mud User88f12472016-06-24 23:31:02 +02001SYNOPSIS
2 #include <sys/include_list.h>
3
4 string *include_list();
5 string *include_list(object ob);
6 string *include_list(object ob, int flags);
7
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
41 Wenn ein Objekt, inklusive <ob>, einem replace_programm() unterworfen
42 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
50BEISPIEL
51 Dieser Code erzeugt (mit /sys als Includeverzeichnis des Systems):
52
53 a.c: #include "b.h"
54 #include <c.h>
55 b.h: #include "d.h"
56 c.h: #define BAR
57 d.h: #define FOO
58
59 Die Efun liefert drei Resultate:
60
61 include_list(a, INCLIST_FLAT)
62 -> ({ "a.c", 0, 0
63 , "\"b.h\"", "/.../b.h", 1
64 , "\"d.h\"", "/.../d.h", 2
65 , "<c.h>", "/sys/c.h", 1
66 })
67
68 include_list(a, INCLIST_TREE)
69 -> ({ "a.c", 0, 0
70 , ({ "\"b.h\"", "/.../b.h", 1
71 , "\"d.h\"", "/.../d.h", 2
72 }), 0, 0
73 , "<c.h>", "/sys/c.h", 1
74 })
75
76AENDERUNGEN
77 Eingefuehrt in LDMud 3.2.9, 3.3.128
78
79SIEHE AUCH
80 debug_info(E), inherit_list(E)