[freeciv-data] (PR#9117) Documentation: guidelines for macros and inline functions

"Jason Short" <[email protected]> Sun, 18 Jul 2004 12:03:54 -0700
Newsgroups gmane.games.freeciv.data
Message-ID <[email protected]>
This is a multi-part message in MIME format...

------------=_1090177434-12871-2
Content-Type: text/plain; charset="utf-8"


<URL: http://rt.freeciv.org/Ticket/Display.html?id=9117 >

> [jdorje - Sat Jun 26 22:19:18 2004]:

> This patch adds guidelines to doc/HACKING on the use of macros and 
> inline functions.  Of course nobody will agree with them.  They're 
> intended to be a compromise between fixing some broken behavior (the 
> first three rules) and keeping the status quo (the last three rules).

This patch has some changes based on what other people complained about.
 Can everyone live with this?

jason


------------=_1090177434-12871-2
Content-Type: text/x-patch; charset="utf-8"; name="inline-2.diff"
Content-Disposition: inline; filename="inline-2.diff"
Content-Transfer-Encoding: 7bit

Index: doc/HACKING
===================================================================
RCS file: /home/freeciv/CVS/freeciv/doc/HACKING,v
retrieving revision 1.19
diff -u -r1.19 HACKING
--- doc/HACKING	16 May 2004 19:07:35 -0000	1.19
+++ doc/HACKING	18 Jul 2004 19:02:01 -0000
@@ -984,6 +984,40 @@
 
 
 ===========================================================================
+Macros and inline functions
+===========================================================================
+
+For a long time Freeciv had no inline functions, only macros.  With the
+use of other C99 features and some new requirements by the code, this has
+changed.  Now both macros and inline functions are used.
+
+This causes problems because one coder may prefer to use a macro while
+another prefers an inline function.  Of course there was always some
+discretion to the author about whether to use a function or a macro; all
+we've done is add even more choices.
+
+Therefore the following guidelines should be followed:
+
+- Functions should only be put into header files when doing so makes a
+  measurable impact on speed.  Functions should not be turned into macros or
+  inlined unless there is a reason to do so.
+
+- Macros that take function-like parameters should evaluate each parameter
+  exactly once.  Any macro that doesn't follow this convention should be
+  named in all upper-case letters as a MACRO.
+
+- Iterator macros should respect "break".
+
+- In header files macros are preferred to inline functions, but inline
+  functions are better than MACROS.
+
+- Functions or macros that are currently in one form do not have to be
+  changed to the other form.
+
+Note that many existing macros do not follow these guidelines.
+
+
+===========================================================================
 Style Guide
 ===========================================================================
 

------------=_1090177434-12871-2--