| Index: third_party/grpc/doc/c-style-guide.md
|
| diff --git a/third_party/grpc/doc/c-style-guide.md b/third_party/grpc/doc/c-style-guide.md
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..87de8892ddd3c73255a313d85d371e0b6ed28ced
|
| --- /dev/null
|
| +++ b/third_party/grpc/doc/c-style-guide.md
|
| @@ -0,0 +1,65 @@
|
| +GRPC C STYLE GUIDE
|
| +=====================
|
| +
|
| +Background
|
| +----------
|
| +
|
| +Here we document style rules for C usage in the gRPC Core library.
|
| +
|
| +General
|
| +-------
|
| +
|
| +- Layout rules are defined by clang-format, and all code should be passed through
|
| + clang-format. A (docker-based) script to do so is included in
|
| + tools/distrib/clang_format_code.sh.
|
| +
|
| +Header Files
|
| +------------
|
| +
|
| +- Public header files (those in the include/grpc tree) should compile as pedantic C89
|
| +- Public header files should be includable from C++ programs. That is, they should
|
| + include the following:
|
| + ```c
|
| + #ifdef __cplusplus
|
| + extern "C" {
|
| + # endif
|
| +
|
| + /* ... body of file ... */
|
| +
|
| + #ifdef __cplusplus
|
| + }
|
| + # endif
|
| + ```
|
| +- Header files should be self-contained and end in .h.
|
| +- All header files should have a #define guard to prevent multiple inclusion.
|
| + To guarantee uniqueness they should be based on the file's path.
|
| +
|
| + For public headers: include/grpc/grpc.h --> GRPC_GRPC_H
|
| +
|
| + For private headers:
|
| + src/core/channel/channel_stack.h --> GRPC_INTERNAL_CORE_CHANNEL_CHANNEL_STACK_H
|
| +
|
| +C99 Features
|
| +------------
|
| +
|
| +- Variable sized arrays are not allowed
|
| +- Do not use the 'inline' keyword
|
| +- Flexible array members are allowed (https://en.wikipedia.org/wiki/Flexible_array_member)
|
| +
|
| +Comments
|
| +--------
|
| +
|
| +Within public header files, only `/* */` comments are allowed.
|
| +
|
| +Within implementation files and private headers, either single line `//`
|
| +or multi line `/* */` comments are allowed. Only one comment style per file is
|
| +allowed however (i.e. if single line comments are used anywhere within a file,
|
| +ALL comments within that file must be single line comments).
|
| +
|
| +Symbol Names
|
| +------------
|
| +
|
| +- Non-static functions must be prefixed by grpc_
|
| +- static functions must not be prefixed by grpc_
|
| +- enumeration values and #define names are uppercased, all others are lowercased
|
| +- Multiple word identifiers use underscore as a delimiter (NEVER camel casing)
|
|
|