summaryrefslogtreecommitdiff
path: root/docs
diff options
context:
space:
mode:
authorFrediano Ziglio <fziglio@redhat.com>2018-02-06 22:28:23 +0000
committerFrediano Ziglio <fziglio@redhat.com>2018-02-08 14:26:10 +0000
commit5088afb05a63d1e4b087b631278a64fecfcd5cd6 (patch)
tree9ef479b67d30019b3d573359c2f31f4a4303f00c /docs
parentc2faefc2e107d9d6037080918e3aa0746d3d5c06 (diff)
style: Update style to include some C++ element
This style is used by other SPICE projects like spice-streaming-agent. See discussion "Coding style and naming conventions for C++" at https://lists.freedesktop.org/archives/spice-devel/2018-January/041562.html. Signed-off-by: Frediano Ziglio <fziglio@redhat.com> Acked-by: Lukáš Hrázký <lhrazky@redhat.com>
Diffstat (limited to 'docs')
-rw-r--r--docs/spice_style.txt52
1 files changed, 52 insertions, 0 deletions
diff --git a/docs/spice_style.txt b/docs/spice_style.txt
index f5d13642..6fdba48c 100644
--- a/docs/spice_style.txt
+++ b/docs/spice_style.txt
@@ -380,3 +380,55 @@ Also in source (no header) files you must include `config.h` at the beginning so
#include "spice_server.h"
----
+
+C++
+---
+C\++ style follows C style if not specified otherwise.
+The C+\+11 dialect is assumed by default. No attempts will be made to
+restrict the code to older variants of C+\+.
+For compatibility reasons don't use more recent C++ dialects.
+
+Method names
+~~~~~~~~~~~~
+
+Method names should use lower case and separate words with
+underscores.
+
+
+Namespaces
+~~~~~~~~~~
+
+Namespaces should use lower case and separate words with underscores.
+Namespace blocks should not increase indentation.
+Namespaces can be nested. Namespace closing brackets for nested
+namespaces can be placed together on the same line, but for
+readability reasons the closure should specify the namespace with a
+comment.
+
+[source,cpp]
+----
+namespace spice {
+namespace streaming_agent {
+
+class ClassInsideNamespace {
+...
+};
+
+}} // namespace spice::streaming_agent
+----
+
+The `using namespace` construct should never be used in headers. It should
+be used sparingly in source files, and only within the body of short
+functions.
+
+Preferred alternatives to `using namespace` include:
+
+* using declarations
++
+[source,cpp]
+using spice::streaming_agent::some_class;
++
+* namespace aliases
++
+[source,cpp]
+namespace ssa = spice::streaming_agent;