# Tint Source Layering

The `BUILD.gn` is setup with small source units for various components
in Tint. The hierarchy of sources almost matches to folder structure in
tint (except for `base` which is a mix of things in `src/tint` and
`src/tint/util`.


```
+-----------------------------------------+
|         Readers | Writers               |
+-----------------------------------------+
                  |
                  V
+-----------------------------------------+
|       Val | Inspector | Transform       |
+-----------------------------------------+
   |              |
   +--------------+------------------------------+
                  |                              |
                  V                              V
+-----------------------------------------+ +-----------+
|                AST                      | |  Utils IO |
+-----------------------------------------+ +-----------+
                  |                              |
                  V                              |
+-----------------------------------------+      |
|        Program  | Sem                   |      |
+-----------------------------------------+      |
                  |                              |
                  V                              |
+-----------------------------------------+      |
|              AST Hdrs                   |      |
|    (program and sem cause a cycle)      |      |
+-----------------------------------------+      |
                  |                              |
                  V                              |
+-----------------------------------------+      |
|        Clone Context Hdrs               |      |
|    (program and sem cause a cycle)      |      |
+-----------------------------------------+      |
                  |                              |
                  V                              |
+-----------------------------------------+      |
|             Constant                    |      |
+-----------------------------------------+      |
                  |                              |
                  V                              |
+-----------------------------------------+      |
|               Types                     |      |
+-----------------------------------------+      |
                  |                              |
                  V                              |
+-----------------------------------------+      |
|              Builtin                    |      |
+-----------------------------------------+      |
                  |                              |
                  |------------------------------+
                  V
+-----------------------------------------+
|              Symbols                    |
+-----------------------------------------+
                  |
                  V
+-----------------------------------------+ +-------------+
|               Utils                     | | Initializer |
+-----------------------------------------+ +-------------+
```
