# 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.

