MG Mud User | 88f1247 | 2016-06-24 23:31:02 +0200 | [diff] [blame^] | 1 | SYNOPSIS |
| 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 | |
| 8 | BESCHREIBUNG |
| 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 | |
| 50 | BEISPIEL |
| 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 | |
| 76 | AENDERUNGEN |
| 77 | Eingefuehrt in LDMud 3.2.9, 3.3.128 |
| 78 | |
| 79 | SIEHE AUCH |
| 80 | debug_info(E), inherit_list(E) |