[PATCH v2] converts Spice_style.odt to asciidoc spice_style.txt

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



The conversion try keeps the content as is no matter if updated or not.
Asciidoc format is already used for manual.
Using a text format make easier to see git diff and send patches.
Also it's easier to convert to different format and copy to web pages.

Signed-off-by: Frediano Ziglio <fziglio@xxxxxxxxxx>
---
 docs/Makefile.am     |   7 +
 docs/Spice_style.odt | Bin 19045 -> 0 bytes
 docs/spice_style.txt | 450 +++++++++++++++++++++++++++++++++++++++++++++++++++
 3 files changed, 457 insertions(+)
 delete mode 100644 docs/Spice_style.odt
 create mode 100644 docs/spice_style.txt

Changes since v1:
- use different format for sections;
- use link instead of section number.

diff --git a/docs/Makefile.am b/docs/Makefile.am
index 18e785f..f1759f8 100644
--- a/docs/Makefile.am
+++ b/docs/Makefile.am
@@ -1,3 +1,10 @@
+ASCIIDOC_FLAGS = -a icons -a toc
+
 if BUILD_MANUAL
 SUBDIRS = manual
+
+all-local: spice_style.html
+
+spice_style.html: spice_style.txt
+	$(AM_V_GEN) $(ASCIIDOC) -n $(ASCIIDOC_FLAGS) -o $@ $<
 endif
diff --git a/docs/Spice_style.odt b/docs/Spice_style.odt
deleted file mode 100644
index efdcd1a62ba0c4995e470b6a5ec22301f24ab340..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 19045
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

diff --git a/docs/spice_style.txt b/docs/spice_style.txt
new file mode 100644
index 0000000..895126a
--- /dev/null
+++ b/docs/spice_style.txt
@@ -0,0 +1,450 @@
+Spice project coding style and coding conventions
+=================================================
+
+Draft 2
+
+Copyright (C) 2009 Red Hat, Inc.
+Licensed under a Creative Commons Attribution-Share Alike 3.0
+United States License (see http://creativecommons.org/licenses/by-sa/3.0/us/legalcode).
+
+
+C and C++ style
+---------------
+
+All of the following are applicable for both c and c+\+, except for <<cpp, C++ section>>.
+
+Source Files
+------------
+
+Names
+~~~~~
+
+Use lower case and separate words using underscore (e.g., file_name.c, header.h).
+
+Use cpp file extension for c\++ source files and hpp extension for c++ template files. Use standard file extension for c source and header files.
+
+Line width
+~~~~~~~~~~
+
+No more then 100 character on a single line
+
+Tabs
+~~~~
+
+Tabs are not allowed, use 4 spaces instead
+
+White spaces
+~~~~~~~~~~~~
+
+Trailing white spaces are not allowed
+
+New Line
+~~~~~~~~
+
+Use Unix style line ending (i.e., LF)
+
+New line (i.e., EOL) must be the last char in the file
+
+Comparing
+---------
+
+Use  right-hand comparison style.
+
+Examples: +
+  use `(var == 7)` instead of  `(7 == var)` +
+  use `(function(var) > 7)` instead of `(7 < function(var))`
+
+TRUE, FALSE and NULL
+--------------------
+
+Use TRUE FALSE and NULL instead of 1 and 0 in order to improve code readability. TRUE FALSE is not relevant for c++, in c++ use the built-in bool type.
+
+Static storage initialization
+-----------------------------
+
+To improve code readability, explicitly initialize variables that depend on default initialization with zero/null.
+
+Fixme and todo
+--------------
+
+Comments that are prefixed with `fixme` describe a bug that need to be fixed. Generally, it is not allowed to commit new code having `fixme` comment. Committing  `fixme` is allowed only for existing bugs. Comments that are prefixed with `todo` describe further features, optimization or code improvements, and they are allowed to be committed along with the relevant code.
+
+ASSERT
+------
+
+Use it freely. ASSERT helps testing function arguments and function results validity.  ASSERT helps detecting bugs and improve code readability and stability.
+
+sizeof
+------
+
+Apply function style to `sizeof` (i.e., use `sizeof(x)`)
+
+const
+-----
+
+Use const keyword when applicable to improve code reliability and celerity.
+
+goto
+----
+
+Using goto is allowed in c code for error handling. In any other case it will be used only as a special exception.
+
+Defining Constant values
+------------------------
+
+Use defines for constant values for improving readability and ease of changes. Alternatively, use global `const` variables.
+
+void argument
+-------------
+
+Don't add explicitly void argument in functions without arguments. (i.e., void function_name() is OK)
+
+Short functions
+---------------
+
+Try to split code to short functions, each having simple functionality, in order to improve code readability and re-usability. Prefix with inline short functions or functions that were splitted for readability reason.
+
+Return on if
+------------
+
+Try to return immediately on if in places that can reduce indentation level.
+
+Example:
+
+prefer
+[source,c]
+----
+void function(int *n)
+{
+    if (!n) {
+        return;
+    }
+    ...
+}
+----
+on
+[source,c]
+----
+void function(int *n)
+{
+    if (!n) {
+        return;
+    } else {
+        ...
+    }
+}
+----
+
+Names
+-----
+
+* Don't underestimate the importance of name choosing. Good names make the code more easy to understand and reduce the required level of code documentation. When choosing names, prefer long meaningful names over short vague name.
+* Variable and Function names - use lower case and separate words using underscore (e.g., sample_variable_name)
+* Structures, class and enum names - one or more words, each word start with upper case (e.g., Name, SampleStructName)
+* Defines and enum items names - uppercase words separated using underscores (e.g., NAME, SAMPLE_DEFINE_NAME)
+
+Optimization
+------------
+
+Keep optimization to fast path code. Prefer safe, clear and easy to maintain coding for code that is not on the fast path.
+
+Spacing
+-------
+
+Use spacing for improving code readability.
+
+[source,c]
+for (i = 0; i < 10; ++i) {
+    some_func(var, i * i + *ptr, &var, sizeof(var));
+}
+
+Function Indentation
+--------------------
+
+* No spaces between function name to left bracket.
+* Curly bracket start on new line.
+* Functions must be padded with empty lines on both sides
++
+[source,c]
+void function(type1 arg1, type2 arg2, type2 arg3)
+{
+  ...
+}
++
+* In case of a new line in arguments list, align it to the first argument type.
++
+[source,c]
+----
+void function(type1 arg1,
+              type2 arg2,
+              type3 arg3)
+----
++
+Or
++
+[source,c]
+----
+void function(type1 arg1, type2 arg2,
+              type3 arg3)
+----
++
+* New line is acceptable only in arguments list
+
+Branching indentation
+---------------------
+
+* Add space after a branch keyword and after the right bracket.
+* Curly bracket starts on the same line the branch starts.
+* Place curly brackets after all control flow constructs even where optional. This convention reduces branching bugs that are difficult to detect. It also makes it easier to add logging messages during debugging  since it eliminates the need to add the brackets.
++
+[source,c]
+----
+if (condition) {
+    ...
+} else if (condition) {
+    ...
+} else {
+    ...
+}
+----
++
+In case of long condition statement, prefer having additional temporary variable over multiple line condition statement.
++
+In case of new line in condition statement.
++
+[source,c]
+----
+if (long_name && very_long_name && very_long ||
+                                               var_name) {
+----
++
+or indent using two tabs
++
+[source,c]
+----
+if (long_name && very_long_name && long_name ||
+        var_name) {
+----
++
+Break function arguments list in long condition statement according to section 18.
++
+[source,c]
+----
+while (condition) {
+        ...
+}
+
+do {
+    ...
+} while (condition);
+
+for (i = x; i < y; i++) {
+    ...
+}
+
+
+switch (x) {
+case A: {
+    ...
+    break;
+}
+case B:
+    ...
+    ...
+    break;
+default:
+    ...
+}
+----
+
+Types indentation
+-----------------
+
+[source,c]
+----
+struct StructName {
+    type1 name1;
+    type2 name2;
+
+    ...
+};
+
+enum {
+    A,
+    B,
+    C = 10,
+    D,
+};
+
+union {
+    type1 name1;
+    type2 name2;
+    ...
+} u;
+----
+
+Vertical indentation
+--------------------
+
+Use one space no tabs and no vertical alignment.
+[source,c]
+----
+long var_name_1 = 7;
+int var_name_2 = 1111l;
+unsigned long long_var_name_1 = 666;
+char long_var_name_1 = 'a';
+
+void f1(int a, char ch);
+unsigned long f2(int a, char ch);
+----
+
+Multi line macro indentation
+----------------------------
+
+[source,c]
+#define MACRO_NAME(a, b, c) {        \
+    int ab = a + c;             \
+    int ac = a + b;             \
+    int bc = b + c;             \
+    f(ab, ac, bc);              \
+}
+
+Multi line array indentation
+----------------------------
+
+[source,c]
+char *array[] = {
+    "item_1",
+    "item_2",
+    "item_3",
+};
+
+[[cpp]]
+C++
+---
+
+C++ style extends C Coding style
+
+One super
+~~~~~~~~~
+
+Avoid having more then one super class. Inherit from one super class and multiple interfaces (abstract class) for having multiple inheritance.
+
+Data members
+~~~~~~~~~~~~
+
+Prefix all protected and private data members with underscore (i.e., _member_name).
+
+Using public data members is allowed only as an exception. Use getters and setters instead.
+
+Object reference
+~~~~~~~~~~~~~~~~
+
+For code clarity use object reference (i.e., Type& var) in places where it is not allow to have null pointer and is not permitted to release the object.
+
+Templates
+~~~~~~~~~
+
+The use of c++ templates is limited to  simple containers.
+
+'*' and '&'
+~~~~~~~~~~~
+
+'\*' and '&' , should be directly connected with the *type names*.
+
+Example:
+
+[source,c]
+void function(int* i, int& n);
+
+Class indentation
+~~~~~~~~~~~~~~~~~
+
+[source,c]
+----
+class ClassName: public SuperClass, public FirstInterface,
+                 public SecondInterface {
+public:
+    ClassName();
+    virtual ~ClassName();
+
+    type public_function_1(type var);
+    type public_function_2();
+    ...
+
+protected:
+    type protected_function_1(type var);
+    type protected_function_2();
+    ...
+
+private:
+    type private_function_1(type var);
+    type private_function_2();
+    ...
+
+public:
+    type public_member_1;
+    type public_member_2;
+    ...
+
+protected:
+    type _protected_member_1;
+    type _protected_member_2;
+    ...
+
+private:
+    type _private_member_1;
+    type _private_member_2;
+    ...
+};
+----
+
+Constructor indentation
+~~~~~~~~~~~~~~~~~~~~~~~
+
+[source,c]
+----
+ClassName::ClassName(type1 arg1, type2 arg2,type3 arg3,
+                     type4 arg4)
+    : SuperClass(arg1, arg2)
+    , _member_1 (arg3)
+    , _member_2 (arg4)
+    ...
+{
+    ...
+}
+----
+
+bool
+~~~~
+
+Use built-in bool `true` and `false` instead of `TRUE` and `FALSE`.
+
+Operator overloading
+~~~~~~~~~~~~~~~~~~~~
+
+Avoid using operator overloading. It is only allowed as an exception.
+
+AutoRef and AutoPtr
+~~~~~~~~~~~~~~~~~~~
+
+Use `AutoRef` and `AutoPtr` style object for automatic object release. Using those objects simplify function cleanups and exception handling.
+
+Spice client
+------------
+
+#ifdef PLATFORM
+~~~~~~~~~~~~~~~
+
+Use #ifdef <platform> only in cases of different logic that depends on platform. In all other case add common interface (e.g., in platform.h) and keep specific platform implementation in platform directory (e.g.,windows).
+
+Use standard macros
+~~~~~~~~~~~~~~~~~~~
+ LOG_INFO
+ LOG_WARN
+ LOG_ERROR
+ ASSERT
+ PANIC
+ DBG
+ THROW
+ THROW_ERR
-- 
2.5.5

_______________________________________________
Spice-devel mailing list
Spice-devel@xxxxxxxxxxxxxxxxxxxxx
https://lists.freedesktop.org/mailman/listinfo/spice-devel




[Index of Archives]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Security]     [Bugtraq]     [Linux]     [Linux OMAP]     [Linux MIPS]     [ECOS]     [Asterisk Internet PBX]     [Linux API]     [Monitors]