| SYNOPSIS |
| #include <include_list.h> |
| |
| string * include_list() |
| string * include_list(object|lwobject ob) |
| string * include_list(object|lwobject ob, int flags) |
| |
| |
| DESCRIPTION |
| Return information about all files included into the compilation |
| of <ob>, including <ob> program's own filename. |
| If <ob> is omitted, it defaults to the current object. |
| |
| In the resulting array(s), the information for one include file takes |
| up three elements: |
| |
| string [i+0]: the name as it appeared in the program, including the |
| delimiters ("" or <>, resp.). |
| string [i+1]: the absolute filename of the include file. |
| int [i+2]: the inclusion depth (usually 1, more for nested |
| includes). |
| |
| The first entry in the result is the program's own name in [i+0], |
| the other two elements [i+1] and [i+2] are 0. |
| |
| The <flag> determines the exact structure of the result: |
| |
| <flag> = INCLIST_FLAT (0, default): |
| The result is a flat array of the entries, starting the with |
| the entry for <ob> itself, followed by the entries for all |
| included files in the order they were encountered. |
| |
| <flag> = INCLIST_TREE (1): |
| The result is an array starting the with the entry |
| of <ob> itself, followed by the entries for all directly included |
| files. If one of the included files has no nested includes by itself, |
| then its information will be stored directly in the array. |
| If one included file has includes by itself, a subvector will |
| be created and stored in the result vector (again in [i+0], with |
| [i+1] and [i+2] being 0). These subvectors have the same |
| structure as the main result vector. |
| |
| If objects, including <ob>, had been undergone a replace_program(), |
| the returned filenames will reflect the actual active program. |
| |
| The returned proper include filenames always begin with '/' (absolute |
| path), even when the parser runs in COMPAT mode. The filename of |
| the object itself however does not begin with a '/' in COMPAT |
| mode. |
| |
| |
| EXAMPLES |
| Given this source code (and /sys as system include directory): |
| |
| a.c: #include "b.h" |
| #include <c.h> |
| b.h: #include "d.h" |
| c.h: #define BAR |
| d.h: #define FOO |
| |
| the efun will give these results: |
| |
| 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 |
| }) |
| |
| |
| HISTORY |
| Implemented in LDMud 3.2.9/3.3.128. |
| |
| SEE ALSO |
| debug_info(E), inherit_list(E) |