SYNOPSIS #include <sys/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_programm() 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. BEISPIEL 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 }) AENDERUNGEN Eingefuehrt in LDMud 3.2.9, 3.3.128 SIEHE AUCH debug_info(E), inherit_list(E)