From e2a029b5d583c3268df4d798f8e79874919eb601 Mon Sep 17 00:00:00 2001 From: Clifford Wolf Date: Wed, 30 Jul 2014 14:10:49 +0200 Subject: [PATCH] Added CodingStyle document --- CodingStyle | 43 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 CodingStyle diff --git a/CodingStyle b/CodingStyle new file mode 100644 index 000000000..e076cbd89 --- /dev/null +++ b/CodingStyle @@ -0,0 +1,43 @@ + + +Section 0: Notes on the existing codebase +----------------------------------------- + +Not all parts of Yosys adhere to this coding styles for historical +reasons. When adding code to existing parts of the system, adhere +to this guide for the new code instead of trying to mimic to style +of the surrounding code. + + + +Section 1: Formatting of code +----------------------------- + +- Yosys code is using tabs for indentation. Tabs are 8 characters. + +- A continuation of a statement in the following line is indented by + two additional tabs. + +- Lines are as long as you want them to be. A good rule of thumb is + to break lines at about column 150. + +- Opening braces can be put on the same or next line as the statement + opening the block (if, switch, for, while, do). Put the opening brace + on its own line for larger blocks. + +- Otherwise stick to the Linux Kernel Coding Stlye: + https://www.kernel.org/doc/Documentation/CodingStyle + + +Section 2: C++ Langugage +------------------------ + +Yosys is written in C++11. At the moment only constructs supported by +gcc 4.6 is allowed in Yosys code. This will change in future releases. + +In general Yosys uses "int" instead of "size_t". To avoid compiler +warnings for implicit type casts, always use "SIZE(foobar)" instead +of "foobar.size()". (the macro SIZE() is defined by kernel/yosys.h) + +Use range-based for loops whenever applicable. + -- 2.30.2