| # Libsycl Coding Standards | |
| :::{contents} | |
| :local: true | |
| ::: | |
| ## Introduction | |
| The `libsycl` project follows the | |
| [LLVM Coding Standards](https://llvm.org/docs/CodingStandards.html) with | |
| exceptions as described in this document. | |
| ### Naming | |
| #### Names of Macros, Types, Functions, Variables, and Enumerators | |
| Entities specified by the SYCL specification are named as required by the SYCL | |
| specification. Names of all other entities follow the guidance in the LLVM | |
| Coding Standards. | |
| #### Names of Files and Directories | |
| - **Directory Names** should be in snake case (e.g. `test_e2e`) except in | |
| cases where LLVM project wide conventions are used. For example, LIT tests | |
| often use an `Inputs` directory to hold files that are used by tests but | |
| that should be excluded from test discovery. | |
| - **File Names in snake case** should be used for all C++ implementation files. | |
| For example files in directories `include`, `src`, `test`, `utils`, | |
| and `tools` should be named in snake case. | |
| - **File Names in camel case** should be used for most other files. For example | |
| files in directories `cmake/modules` and `docs` should be named in camel | |
| case. | |