Files
kotlin-fork/kotlin-native/codestyle/cpp/README.md
T
Stanislav Erokhin f624800b84 Move everything under kotlin-native folder
I was forced to manually do update the following files, because otherwise
they would be ignored according .gitignore settings. Probably they
should be deleted from repo.

Interop/.idea/compiler.xml
Interop/.idea/gradle.xml
Interop/.idea/libraries/Gradle__org_jetbrains_kotlin_kotlin_runtime_1_0_3.xml
Interop/.idea/libraries/Gradle__org_jetbrains_kotlin_kotlin_stdlib_1_0_3.xml
Interop/.idea/modules.xml
Interop/.idea/modules/Indexer/Indexer.iml
Interop/.idea/modules/Runtime/Runtime.iml
Interop/.idea/modules/StubGenerator/StubGenerator.iml
backend.native/backend.native.iml
backend.native/bc.frontend/bc.frontend.iml
backend.native/cli.bc/cli.bc.iml
backend.native/cli.bc/src/org/jetbrains/kotlin/cli/bc/K2Native.kt
backend.native/cli.bc/src/org/jetbrains/kotlin/cli/bc/K2NativeCompilerArguments.kt
backend.native/tests/link/lib/foo.kt
backend.native/tests/link/lib/foo2.kt
backend.native/tests/teamcity-test.property
2020-10-27 21:00:28 +03:00

1.8 KiB

Code style for C++

TODO: Expand beyond naming and formatting

Headers

  • Headers should live in the same folder with it's implementation counterpart (if there's one)
  • Headers should use header guards

Naming

  • Types should use PascalCase
  • Local variables and function parameters should use camelCase
  • Global variables should use camelCase
  • Constants should use kPascalCase (with prefix k)
  • Private functions (not visible outside a compilation unit) should use camelCase
  • Exported functions (declared in headers or shared with Kotlin) should use PascalCase
  • Member fields should use camelCase. Private member fields should add _ suffix: camelCase_
  • Member functions should use camelCase
  • Macros should use SCREAMING_SNAKE_CASE
  • namespaces should use snake_case
  • enum and enum class members should use kPascalCase

If API is designed to mimic C++ stdlib (e.g. stubbing <atomic> for platforms that do not support it), its allowed to follow stdlib naming conventions.

Formatting

For automated formatting you can use config for CLion or clang-format (see config at the repo's root). Note, that CLion uses clang-format by default; this can be turned off if you prefer to use rules from CLionFormat.xml.

Formatting rules are designed to closely mirror Kotlin rules.

  • Use spaces instead of tabs. Indentation width is 4 spaces. Continuation width is 8 spaces
  • Do not indent namespaces
  • Visibility modifiers are placed without indentation
  • All operators should be wrapped with a space or a line break
  • In pointer and reference definitions * and & should be placed on a type instead of a variable
  • In pointer to functions prefer not to use * at all.
  • Add a space between template and <