| 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) |