Convert macros to static inline functions

Peter Eisentraut <peter.eisentraut@enterprisedb.com>

From: Peter Eisentraut <peter.eisentraut@enterprisedb.com>
To: pgsql-hackers <pgsql-hackers@postgresql.org>
Date: 2022-05-16T08:27:58Z
Lists: pgsql-hackers

Attachments

Inspired by [0], I looked to convert more macros to inline functions. 
The attached patches are organized "bottom up" in terms of their API 
layering; some of the later ones depend on some of the earlier ones.


Note 1: Some macros that do by-value assignments like

#define PageXLogRecPtrSet(ptr, lsn) \
  ((ptr).xlogid = (uint32) ((lsn) >> 32), (ptr).xrecoff = (uint32) (lsn))

can't be converted to functions without changing the API, so I left 
those alone for now.


Note 2: Many macros in htup_details.h operate both on HeapTupleHeader 
and on MinimalTuple, so converting them to a function doesn't work in a 
straightforward way.  I have some in-progress work in that area, but I 
have not included any of that here.


[0]: 
https://www.postgresql.org/message-id/202203241021.uts52sczx3al@alvherre.pgsql

Commits

  1. Add some const decorations (htup.h)

  2. Convert macros to static inline functions (htup_details.h, itup.h)

  3. Convert macros to static inline functions (rel.h)

  4. Convert macros to static inline functions (itup.h)

  5. Convert macros to static inline functions (tupmacs.h)

  6. Convert macros to static inline functions (xlog_internal.h)

  7. Convert macros to static inline functions (bufmgr.h)

  8. Convert macros to static inline functions (itemptr.h)

  9. Convert macros to static inline functions (bufpage.h)

  10. Convert macros to static inline functions (block.h)