]> granicus.if.org Git - postgresql/commitdiff
Remove extraneous semicolon from uses of relptr_declare().
authorTom Lane <tgl@sss.pgh.pa.us>
Tue, 6 Dec 2016 01:27:55 +0000 (20:27 -0500)
committerTom Lane <tgl@sss.pgh.pa.us>
Tue, 6 Dec 2016 01:27:55 +0000 (20:27 -0500)
If we're going to write a semicolon after calls of relptr_declare(),
then we don't need one inside the macro, and removing it suppresses
"empty declaration" warnings from pickier compilers (eg pademelon).

While at it, we might as well use relptr() inside relptr_declare(),
because otherwise that macro would likely go unused altogether.

Also improve the comment, which I for one found unclear,
and provide a specific example of intended usage.

src/include/utils/relptr.h

index f01924a1edf53a43ead8d3c3924b7fd619ce6342..1b9f4bc0fd238340856144a4e4e513d085679c9d 100644 (file)
@@ -16,7 +16,7 @@
 
 /*
  * Relative pointers are intended to be used when storing an address that may
- * be relative either to the base of the processes address space or some
+ * be relative either to the base of the process's address space or some
  * dynamic shared memory segment mapped therein.
  *
  * The idea here is that you declare a relative pointer as relptr(type)
 #define relptr(type)    union { type *relptr_type; Size relptr_off; }
 
 /*
- * pgindent gets confused by declarations of the type relptr(type), so it's
- * useful to give them a name that doesn't include parentheses.
+ * pgindent gets confused by declarations that use "relptr(type)" directly,
+ * so preferred style is to write
+ *             typedef struct ... SomeStruct;
+ *             relptr_declare(SomeStruct, RelptrSomeStruct);
+ * and then declare pointer variables as "RelptrSomeStruct someptr".
  */
-#define relptr_declare(type, name) \
-       typedef union { type *relptr_type; Size relptr_off; } name;
+#define relptr_declare(type, relptrtype) \
+       typedef relptr(type) relptrtype
 
 #ifdef HAVE__BUILTIN_TYPES_COMPATIBLE_P
 #define relptr_access(base, rp) \