/* ----------------
- * support macros
+ * support functions
* ----------------
*/
* ItemPointerIsValid
* True iff the disk item pointer is not NULL.
*/
-#define ItemPointerIsValid(pointer) \
- ((bool) (PointerIsValid(pointer) && ((pointer)->ip_posid != 0)))
+static inline bool
+ItemPointerIsValid(const ItemPointerData *pointer)
+{
+ return PointerIsValid(pointer) && pointer->ip_posid != 0;
+}
/*
* ItemPointerGetBlockNumberNoCheck
* Returns the block number of a disk item pointer.
*/
-#define ItemPointerGetBlockNumberNoCheck(pointer) \
-( \
- BlockIdGetBlockNumber(&(pointer)->ip_blkid) \
-)
+static inline BlockNumber
+ItemPointerGetBlockNumberNoCheck(const ItemPointerData *pointer)
+{
+ return BlockIdGetBlockNumber(&pointer->ip_blkid);
+}
/*
* ItemPointerGetBlockNumber
* As above, but verifies that the item pointer looks valid.
*/
-#define ItemPointerGetBlockNumber(pointer) \
-( \
- AssertMacro(ItemPointerIsValid(pointer)), \
- ItemPointerGetBlockNumberNoCheck(pointer) \
-)
+static inline BlockNumber
+ItemPointerGetBlockNumber(const ItemPointerData *pointer)
+{
+ Assert(ItemPointerIsValid(pointer));
+ return ItemPointerGetBlockNumberNoCheck(pointer);
+}
/*
* ItemPointerGetOffsetNumberNoCheck
* Returns the offset number of a disk item pointer.
*/
-#define ItemPointerGetOffsetNumberNoCheck(pointer) \
-( \
- (pointer)->ip_posid \
-)
+static inline OffsetNumber
+ItemPointerGetOffsetNumberNoCheck(const ItemPointerData *pointer)
+{
+ return pointer->ip_posid;
+}
/*
* ItemPointerGetOffsetNumber
* As above, but verifies that the item pointer looks valid.
*/
-#define ItemPointerGetOffsetNumber(pointer) \
-( \
- AssertMacro(ItemPointerIsValid(pointer)), \
- ItemPointerGetOffsetNumberNoCheck(pointer) \
-)
+static inline OffsetNumber
+ItemPointerGetOffsetNumber(const ItemPointerData *pointer)
+{
+ Assert(ItemPointerIsValid(pointer));
+ return ItemPointerGetOffsetNumberNoCheck(pointer);
+}
/*
* ItemPointerSet
* Sets a disk item pointer to the specified block and offset.
*/
-#define ItemPointerSet(pointer, blockNumber, offNum) \
-( \
- AssertMacro(PointerIsValid(pointer)), \
- BlockIdSet(&((pointer)->ip_blkid), blockNumber), \
- (pointer)->ip_posid = offNum \
-)
+static inline void
+ItemPointerSet(ItemPointerData *pointer, BlockNumber blockNumber, OffsetNumber offNum)
+{
+ Assert(PointerIsValid(pointer));
+ BlockIdSet(&pointer->ip_blkid, blockNumber);
+ pointer->ip_posid = offNum;
+}
/*
* ItemPointerSetBlockNumber
* Sets a disk item pointer to the specified block.
*/
-#define ItemPointerSetBlockNumber(pointer, blockNumber) \
-( \
- AssertMacro(PointerIsValid(pointer)), \
- BlockIdSet(&((pointer)->ip_blkid), blockNumber) \
-)
+static inline void
+ItemPointerSetBlockNumber(ItemPointerData *pointer, BlockNumber blockNumber)
+{
+ Assert(PointerIsValid(pointer));
+ BlockIdSet(&pointer->ip_blkid, blockNumber);
+}
/*
* ItemPointerSetOffsetNumber
* Sets a disk item pointer to the specified offset.
*/
-#define ItemPointerSetOffsetNumber(pointer, offsetNumber) \
-( \
- AssertMacro(PointerIsValid(pointer)), \
- (pointer)->ip_posid = (offsetNumber) \
-)
+static inline void
+ItemPointerSetOffsetNumber(ItemPointerData *pointer, OffsetNumber offsetNumber)
+{
+ Assert(PointerIsValid(pointer));
+ pointer->ip_posid = offsetNumber;
+}
/*
* ItemPointerCopy
* Should there ever be padding in an ItemPointer this would need to be handled
* differently as it's used as hash key.
*/
-#define ItemPointerCopy(fromPointer, toPointer) \
-( \
- AssertMacro(PointerIsValid(toPointer)), \
- AssertMacro(PointerIsValid(fromPointer)), \
- *(toPointer) = *(fromPointer) \
-)
+static inline void
+ItemPointerCopy(const ItemPointerData *fromPointer, ItemPointerData *toPointer)
+{
+ Assert(PointerIsValid(toPointer));
+ Assert(PointerIsValid(fromPointer));
+ *toPointer = *fromPointer;
+}
/*
* ItemPointerSetInvalid
* Sets a disk item pointer to be invalid.
*/
-#define ItemPointerSetInvalid(pointer) \
-( \
- AssertMacro(PointerIsValid(pointer)), \
- BlockIdSet(&((pointer)->ip_blkid), InvalidBlockNumber), \
- (pointer)->ip_posid = InvalidOffsetNumber \
-)
+static inline void
+ItemPointerSetInvalid(ItemPointerData *pointer)
+{
+ Assert(PointerIsValid(pointer));
+ BlockIdSet(&pointer->ip_blkid, InvalidBlockNumber);
+ pointer->ip_posid = InvalidOffsetNumber;
+}
/*
* ItemPointerIndicatesMovedPartitions
* True iff the block number indicates the tuple has moved to another
* partition.
*/
-#define ItemPointerIndicatesMovedPartitions(pointer) \
-( \
- ItemPointerGetOffsetNumber(pointer) == MovedPartitionsOffsetNumber && \
- ItemPointerGetBlockNumberNoCheck(pointer) == MovedPartitionsBlockNumber \
-)
+static inline bool
+ItemPointerIndicatesMovedPartitions(const ItemPointerData *pointer)
+{
+ return
+ ItemPointerGetOffsetNumber(pointer) == MovedPartitionsOffsetNumber &&
+ ItemPointerGetBlockNumberNoCheck(pointer) == MovedPartitionsBlockNumber;
+}
/*
* ItemPointerSetMovedPartitions
* Indicate that the item referenced by the itempointer has moved into a
* different partition.
*/
-#define ItemPointerSetMovedPartitions(pointer) \
- ItemPointerSet((pointer), MovedPartitionsBlockNumber, MovedPartitionsOffsetNumber)
+static inline void
+ItemPointerSetMovedPartitions(ItemPointerData *pointer)
+{
+ ItemPointerSet(pointer, MovedPartitionsBlockNumber, MovedPartitionsOffsetNumber);
+}
/* ----------------
* externs