SYNOPSIS
#include <include_list.h>
string * include_list()
string * include_list(object ob)
string * include_list(object ob, int flags)
BESCHREIBUNG
Diese Funktion liefert Informationen ueber alle Dateien, die bei der
Kompilierung von <ob> in dieses Objekt eingebunden wurden, inklusive
den Programmnamen von <ob>. Wird <ob> nicht angegeben, wird
standardmaessig das aktuelle Objekt verwendet.
Im resultierenden Array besteht die Information zu einem Includefile
aus drei Elementen:
- string [i+0]: der Name des Includefiles, wie er im Programm
auftaucht, inklusive den Trennzeichen wie " " oder
< >.
- string [i+1]: der absolute Dateipfad des Includefiles.
- int [i+2]: die Tiefe der Inklusion (gewoehnlich 1, fuer
verschachtelte Includes auch groesser als 1)
Der erste Eintrag im Resultat ist der Name des Programmes selbst in
[i+0], die anderen beiden Elemente [i+1] und [i+2] sind 0.
<flag> bezeichnet die Struktur des Ergebnisses:
- <flag> = INCLIST_FLAT (0, Standard):
Das Resultat ist ein flaches Array. Der erste Eintrag bezeichnet
<ob> selbst, die restlichen Eintraege bezeichnen alle Includefiles
in der Reihenfolge, in der sie auftreten.
- <flag> = INCLIST_TREE (1):
Das Resultat ist ein Array, dessen erster Eintrag das Objekt <ob>
selbst bezeichnet. Alle folgenden Eintraege bezeichnen die
Includefiles von <ob>. Wenn ein Includefile von <ob> selbst keine
Includefiles hat, wird seine Information direkt im Array
gespeichert. Fuer verschachtelte Includefiles wird ein Untervektor
erzeugt und dann in diesem Untervektor abgespeichert (wiederum
in [i+0], [i+1] und [i+2] sind 0). Diese Untervektoren haben
die gleiche Struktur wie das Resultatarray.
Wenn ein Objekt inklusive <ob> einem replace_program() unterworfen
war, spiegeln die gelieferten Dateinamen das effektiv aktive Programm
wider.
Die Includepfade, die geliefert werden, beginnen immer mit '/'
(absolute Pfade), auch wenn der Treiber im COMPAT Modus laeuft.
Trotzdem beginnt der tatsaechliche Dateiname nicht mit einem '/',
wenn der Treiber im COMPAT Modus laeuft.
BEISPIELE
Dieser Code erzeugt (mit /sys als Includeverzeichnis des Systems):
a.c: #include "b.h"
#include <c.h>
b.h: #include "d.h"
c.h: #define BAR
d.h: #define FOO
Die Efun liefert drei Resultate:
include_list(a, INCLIST_FLAT)
-> ({ "a.c", 0, 0
, "\"b.h\"", "/.../b.h", 1
, "\"d.h\"", "/.../d.h", 2
, "<c.h>", "/sys/c.h", 1
})
include_list(a, INCLIST_TREE)
-> ({ "a.c", 0, 0
, ({ "\"b.h\"", "/.../b.h", 1
, "\"d.h\"", "/.../d.h", 2
}), 0, 0
, "<c.h>", "/sys/c.h", 1
})
GESCHICHTE
Eingefuehrt in LDMud 3.2.9, 3.3.128.
SIEHE AUCH
debug_info(E), inherit_list(E)
|