-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).
-
-**
-** Random bits about coding standards and portability
-**
-*****************************************************
-
-MALLOC:
- Don't use it, or you'll have to check the result (and do some dirty stuff
- on AIX). Use xbt_malloc (or even better, xbt_new) instead.
-
-SIZE_T (FIXME: obsolete?)
- If possible, avoid size_t and use unsigned long instead. If not,
- #include <sys/types.h> in all files manipulating size_t
- do cast it to unsigned long before printing (and use %lu)
-
-PRINTF pointer difference (FIXME: advertise %td instead?)
- printf ("diff = %ld\n", (long) (pointer2 - pointer1));
-
-INLINE functions
- The definition of a inline function must be visible when it is used.
- As such, an inline function should be defined (an not only declared)
- in header file (.h) with attributes 'static XBT_INLINE'. It should
- not be defined in source file (.c).
+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
+ - Field getters are named sg_object_get_field() e.g. sg_link_get_name()
+ Field setters are named sg_object_set_field() e.g. sg_link_set_data()
+ - variables and functions are in snake_case()
+ - typedefs do not hide the pointers, i.e. * 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.