34 lines
1.6 KiB
ReStructuredText
34 lines
1.6 KiB
ReStructuredText
===================================
|
|
DF data definitions (DF-structures)
|
|
===================================
|
|
|
|
DFHack's information about DF's data structures is stored in XML files in the
|
|
`df-structures repository <https://github.com/DFHack/df-structures>`_. If you
|
|
have `obtained a local copy of the DFHack source <compile-how-to-get-the-code>`,
|
|
DF-structures is included as a submodule in ``library/xml``.
|
|
|
|
Data structure layouts are described in files named with the ``df.*.xml``
|
|
pattern. This information is transformed by a Perl script (``codegen.pl``) into
|
|
C++ headers, as well as metadata for the Lua wrapper. This ultimately allows
|
|
DFHack code to access DF data directly, with the same speed and capabilities as
|
|
DF itself, which is an advantage over the older out-of-process approach (used
|
|
by debuggers and utilities like Dwarf Therapist). The main disadvantage of this
|
|
approach is that any compiled code relying on these layouts will break when DF's
|
|
layout changes, and will need to be recompiled for every new DF version.
|
|
|
|
Addresses of DF global objects and vtables are stored in a separate file,
|
|
:file:`symbols.xml`. Since these are only absolute addresses, they do not need
|
|
to be compiled in to DFHack code, and are instead loaded at runtime. This makes
|
|
fixes and additions to global addresses possible without recompiling DFHack.
|
|
In an installed copy of DFHack, this file can be found at the root of the
|
|
``hack`` folder.
|
|
|
|
The following pages contain more detailed information about various aspects
|
|
of DF-structures:
|
|
|
|
.. toctree::
|
|
:titlesonly:
|
|
|
|
/library/xml/SYNTAX
|
|
/library/xml/how-to-update
|