summaryrefslogtreecommitdiff
path: root/doc/coding-style.txt
diff options
context:
space:
mode:
Diffstat (limited to 'doc/coding-style.txt')
-rw-r--r--doc/coding-style.txt54
1 files changed, 54 insertions, 0 deletions
diff --git a/doc/coding-style.txt b/doc/coding-style.txt
new file mode 100644
index 000000000..2215ab0ad
--- /dev/null
+++ b/doc/coding-style.txt
@@ -0,0 +1,54 @@
+These are the general coding style rules for Taler.
+
+* Baseline rules are to follow GNU guidelines, modified or extended
+ by the GNUnet style: https://gnunet.org/style
+
+Naming conventions:
+===================
+
+* include files (very similar to GNUnet):
+ + if installed, must start with "taler_" (exception: platform.h),
+ and MUST live in src/include/
+ + if NOT installed, must NOT start with "taler_" and
+ MUST NOT live in src/include/ and
+ SHOULD NOT be included from outside of their own directory
+ + end in "_lib" for "simple" libraries
+ + end in "_plugin" for plugins
+ + end in "_service" for libraries accessing a service, i.e. the mint
+
+* binaries:
+ + taler-mint-xxx: mint programs
+ + taler-merchant-xxx: merchant programs (demos)
+ + taler-wallet-xxx: wallet programs
+ + plugins should be libtaler_plugin_xxx_yyy.so: plugin yyy for API xxx
+ + libtalerxxx: library for API xxx
+
+* logging
+ + tools use their full name in GNUNET_log_setup
+ (i.e. 'taler-mint-keyup') and log using plain 'GNUNET_log'.
+ + pure libraries (without associated service) use 'GNUNET_log_from'
+ with the component set to their library name (without lib or '.so'),
+ which should also be their directory name (i.e. 'util')
+ + plugin libraries (without associated service) use 'GNUNET_log_from'
+ with the component set to their type and plugin name (without lib or '.so'),
+ which should also be their directory name (i.e. 'mintdb-postgres')
+ + libraries with associated service) use 'GNUNET_log_from'
+ with the name of the service, which should also be their
+ directory name (i.e. 'mint')
+
+* configuration
+ + same rules as for GNUnet
+
+* exported symbols
+ + must start with TALER_[SUBSYSTEMNAME]_ where SUBSYSTEMNAME
+ MUST match the subdirectory of src/ in which the symbol is defined
+ + from libtalerutil start just with TALER_, without subsystemname
+
+* private (library-internal) symbols (including structs and macros)
+ + must not start with TALER_ or any other prefix
+
+* testcases
+ + must be called "test_module-under-test_case-description.c"
+
+* performance tests
+ + must be called "perf_module-under-test_case-description.c"