Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
activity::CommImpl: stick to our naming standards for the fields
[simgrid.git] / README.coding
index 52c72c3..6b3d048 100644 (file)
                should leverage our tesh(1) utility.
 
 **
                should leverage our tesh(1) utility.
 
 **
-** Type naming standard
+** NEW type naming standard in SimGrid4
 **
 *****************************************************
 
 **
 *****************************************************
 
-It may sound strange, but the type naming convention was source of intense
-discussion between da SimGrid posse members. The convention we came to may not
-be the best solution, but it has the merit to exist and leave everyone work.
-So please stick to it.
-
-  - ???_t is a valid type (built with typedef)
-  - s_toto_t is a structure (access to fields with .)
-  - s_toto   is a structure needing 'struct' keyword to be used
-  - e_toto_t is an enum
-  - u_toto_t is an union
-  - u_toto   is an union needing 'union' keyword to be used
-  -   toto_t is an 'object' (struct*)
-
-Please to not call toto_t something else than an 'object' (ie, something you
-have to call _new and _free on it).
-
-Example:
-  typedef struct s_toto {} s_toto_t, *toto_t;
-  typedef enum {} e_toto_t;
-
-Moreover, only toto_t (and e_toto_t) are public. The rest (mainly s_toto_t)
-is private.
-
-If you see any part of the code not following this convention, this is a
-bug. Please report it (or fix it yourself if you can).
+SimGrid4 will follow the these rules:
+
+  - filenames are unique in the whole project 
+    (because of a bug in Sonar coverage computation)
+  C++
+  - fields, methods and variables are in snake_case()
+  - Classes and Enum names are in UpperCamelCase
+  - Enum values are in UPPER_SNAKE_CASE (as constants)
+  - public filenames: api_Class.cpp and api/Class.hpp.
+    - Example: src/s4u/s4u_ConditionVariable.cpp and
+               include/simgrid/s4u/ConditionVariable.hpp
+    - If you prefer api_class.cpp, that's OK, too. Breath and relax.
+      Example: src/s4u/s4u_actor.cpp and include/simgrid/s4u/Actor.hpp
+  - internal/kernel filenames: Class.cpp and Class.hpp
+    - Example: src/kernel/activity/Activity.cpp
+               include/simgrid/activity/Activity.hpp
+  C
+  - variables and functions are in snake_case()
+  - typedefs do not hide the pointers, ie * must be explicit
+    char * sg_host_get_name(sg_host_t * host);
+  
+
+This is different from the old convention (described below), that
+should not be used in S4U and its bindings, nor in the kernel.
 
 **
 ** Commenting the source: doxygen
 
 **
 ** Commenting the source: doxygen
@@ -62,10 +61,37 @@ users can see the intended order).
 The documentation of each type and macro are also in the public header since
 this is were they live.
 
 The documentation of each type and macro are also in the public header since
 this is were they live.
 
-The documentation of each function must be in the C file were it lives.
+The documentation of each function must be in the C++ file were it lives.
 
 Any public element (function, type and macro) must have a @brief part.
 
 
 Any public element (function, type and macro) must have a @brief part.
 
+We use @ as a command marker, not \ (so, use @brief not \brief)
+
+**
+** OLD Type naming standard in SimGrid3
+**
+*****************************************************
+
+SimGrid3 legacy interfaces (ie, MSG and SimDag) are following these rules:
+
+  - ???_t is a valid type (built with typedef)
+  - s_toto_t is a structure (access to fields with .)
+  - s_toto   is a structure needing 'struct' keyword to be used
+  - e_toto_t is an enum
+  - u_toto_t is an union
+  - u_toto   is an union needing 'union' keyword to be used
+  -   toto_t is an 'object' (struct*)
+
+Please to not call toto_t something else than an 'object' (ie, something you
+have to call _new and _free on it).
+
+Example:
+  typedef struct s_toto {} s_toto_t, *toto_t;
+  typedef enum {} e_toto_t;
+
+Moreover, only toto_t (and e_toto_t) are public. The rest (mainly s_toto_t)
+is private.
+
 
 *
 * SimGrid Hacker Survival Guide (FIXME: should be betterly placed)
 
 *
 * SimGrid Hacker Survival Guide (FIXME: should be betterly placed)