# Table of contents

| File                                                                                 | Purpose                                                                                    |
|--------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------|
| [aav.d](https://github.com/dlang/dmd/blob/master/compiler/src/dmd/root/aav.d)                 | An associative array implementation                                                        |
| [array.d](https://github.com/dlang/dmd/blob/master/compiler/src/dmd/root/array.d)             | A dynamic array implementation                                                             |
| [bitarray.d](https://github.com/dlang/dmd/blob/master/compiler/src/dmd/root/bitarray.d)       | A compact array of bits                                                                    |
| [complex.d](https://github.com/dlang/dmd/blob/master/compiler/src/dmd/root/complex.d)         | A complex number type                                                                      |
| [ctfloat.d](https://github.com/dlang/dmd/blob/master/compiler/src/dmd/root/ctfloat.d)         | A floating point type for compile-time calculations                                        |
| [env.d](https://github.com/dlang/dmd/blob/master/compiler/src/dmd/root/env.d)                 | Modify environment variables                                                               |
| [file.d](https://github.com/dlang/dmd/blob/master/compiler/src/dmd/root/file.d)               | Read a file from disk and store it in memory                                               |
| [filename.d](https://github.com/dlang/dmd/blob/master/compiler/src/dmd/root/filename.d)       | Encapsulate path and file names                                                            |
| [hash.d](https://github.com/dlang/dmd/blob/master/compiler/src/dmd/root/hash.d)               | Calculate a hash for a byte array                                                          |
| [longdouble.d](https://github.com/dlang/dmd/blob/master/compiler/src/dmd/root/longdouble.d)   | 80-bit floating point number implementation in case they are not natively supported        |
| [man.d](https://github.com/dlang/dmd/blob/master/compiler/src/dmd/root/man.d)                 | Opens an online manual page                                                                |
| [optional.d](https://github.com/dlang/dmd/blob/master/compiler/src/dmd/root/optional.d)       | Implementation of an 'Optional' type                                                       |
| [port.d](https://github.com/dlang/dmd/blob/master/compiler/src/dmd/root/port.d)               | Portable routines for functions that have different implementations on different platforms |
| [region.d](https://github.com/dlang/dmd/blob/master/compiler/src/dmd/root/region.d)           | A region allocator                                                                         |
| [response.d](https://github.com/dlang/dmd/blob/master/compiler/src/dmd/root/response.d)       | Parse command line arguments from response files                                           |
| [rmem.d](https://github.com/dlang/dmd/blob/master/compiler/src/dmd/root/rmem.d)               | Allocate memory using `malloc` or the GC depending on the configuration                    |
| [rootobject.d](https://github.com/dlang/dmd/blob/master/compiler/src/dmd/root/rootobject.d)   | A root object that classes in dmd inherit from                                             |
| [speller.d](https://github.com/dlang/dmd/blob/master/compiler/src/dmd/root/speller.d)         | Try to detect typos in identifiers                                                         |
| [string.d](https://github.com/dlang/dmd/blob/master/compiler/src/dmd/root/string.d)           | Various string related functions                                                           |
| [stringtable.d](https://github.com/dlang/dmd/blob/master/compiler/src/dmd/root/stringtable.d) | Specialized associative array with string keys stored in a variable length structure       |
| [strtold.d](https://github.com/dlang/dmd/blob/master/compiler/src/dmd/root/strtold.d)         | D implementation of the standard C function `strtold` (String to long double)              |
| [utf.d](https://github.com/dlang/dmd/blob/master/compiler/src/dmd/root/utf.d)                 | Encoding/decoding Unicode text                                                             |
