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)
