f624800b84
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
1.8 KiB
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 prefixk) - 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 enumandenum classmembers should usekPascalCase
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
templateand<