@@ -71,85 +71,95 @@ typedef ItemPointerData *ItemPointer;
7171
7272
7373/* ----------------
74- * support macros
74+ * support functions
7575 * ----------------
7676 */
7777
7878/*
7979 * ItemPointerIsValid
8080 * True iff the disk item pointer is not NULL.
8181 */
82- #define ItemPointerIsValid (pointer ) \
83- ((bool) (PointerIsValid(pointer) && ((pointer)->ip_posid != 0)))
82+ static inline bool
83+ ItemPointerIsValid (const ItemPointerData * pointer )
84+ {
85+ return PointerIsValid (pointer ) && pointer -> ip_posid != 0 ;
86+ }
8487
8588/*
8689 * ItemPointerGetBlockNumberNoCheck
8790 * Returns the block number of a disk item pointer.
8891 */
89- #define ItemPointerGetBlockNumberNoCheck (pointer ) \
90- ( \
91- BlockIdGetBlockNumber(&(pointer)->ip_blkid) \
92- )
92+ static inline BlockNumber
93+ ItemPointerGetBlockNumberNoCheck (const ItemPointerData * pointer )
94+ {
95+ return BlockIdGetBlockNumber (& pointer -> ip_blkid );
96+ }
9397
9498/*
9599 * ItemPointerGetBlockNumber
96100 * As above, but verifies that the item pointer looks valid.
97101 */
98- #define ItemPointerGetBlockNumber (pointer ) \
99- ( \
100- AssertMacro(ItemPointerIsValid(pointer)), \
101- ItemPointerGetBlockNumberNoCheck(pointer) \
102- )
102+ static inline BlockNumber
103+ ItemPointerGetBlockNumber (const ItemPointerData * pointer )
104+ {
105+ Assert (ItemPointerIsValid (pointer ));
106+ return ItemPointerGetBlockNumberNoCheck (pointer );
107+ }
103108
104109/*
105110 * ItemPointerGetOffsetNumberNoCheck
106111 * Returns the offset number of a disk item pointer.
107112 */
108- #define ItemPointerGetOffsetNumberNoCheck (pointer ) \
109- ( \
110- (pointer)->ip_posid \
111- )
113+ static inline OffsetNumber
114+ ItemPointerGetOffsetNumberNoCheck (const ItemPointerData * pointer )
115+ {
116+ return pointer -> ip_posid ;
117+ }
112118
113119/*
114120 * ItemPointerGetOffsetNumber
115121 * As above, but verifies that the item pointer looks valid.
116122 */
117- #define ItemPointerGetOffsetNumber (pointer ) \
118- ( \
119- AssertMacro(ItemPointerIsValid(pointer)), \
120- ItemPointerGetOffsetNumberNoCheck(pointer) \
121- )
123+ static inline OffsetNumber
124+ ItemPointerGetOffsetNumber (const ItemPointerData * pointer )
125+ {
126+ Assert (ItemPointerIsValid (pointer ));
127+ return ItemPointerGetOffsetNumberNoCheck (pointer );
128+ }
122129
123130/*
124131 * ItemPointerSet
125132 * Sets a disk item pointer to the specified block and offset.
126133 */
127- #define ItemPointerSet (pointer , blockNumber , offNum ) \
128- ( \
129- AssertMacro(PointerIsValid(pointer)), \
130- BlockIdSet(&((pointer)->ip_blkid), blockNumber), \
131- (pointer)->ip_posid = offNum \
132- )
134+ static inline void
135+ ItemPointerSet (ItemPointerData * pointer , BlockNumber blockNumber , OffsetNumber offNum )
136+ {
137+ Assert (PointerIsValid (pointer ));
138+ BlockIdSet (& pointer -> ip_blkid , blockNumber );
139+ pointer -> ip_posid = offNum ;
140+ }
133141
134142/*
135143 * ItemPointerSetBlockNumber
136144 * Sets a disk item pointer to the specified block.
137145 */
138- #define ItemPointerSetBlockNumber (pointer , blockNumber ) \
139- ( \
140- AssertMacro(PointerIsValid(pointer)), \
141- BlockIdSet(&((pointer)->ip_blkid), blockNumber) \
142- )
146+ static inline void
147+ ItemPointerSetBlockNumber (ItemPointerData * pointer , BlockNumber blockNumber )
148+ {
149+ Assert (PointerIsValid (pointer ));
150+ BlockIdSet (& pointer -> ip_blkid , blockNumber );
151+ }
143152
144153/*
145154 * ItemPointerSetOffsetNumber
146155 * Sets a disk item pointer to the specified offset.
147156 */
148- #define ItemPointerSetOffsetNumber (pointer , offsetNumber ) \
149- ( \
150- AssertMacro(PointerIsValid(pointer)), \
151- (pointer)->ip_posid = (offsetNumber) \
152- )
157+ static inline void
158+ ItemPointerSetOffsetNumber (ItemPointerData * pointer , OffsetNumber offsetNumber )
159+ {
160+ Assert (PointerIsValid (pointer ));
161+ pointer -> ip_posid = offsetNumber ;
162+ }
153163
154164/*
155165 * ItemPointerCopy
@@ -158,42 +168,49 @@ typedef ItemPointerData *ItemPointer;
158168 * Should there ever be padding in an ItemPointer this would need to be handled
159169 * differently as it's used as hash key.
160170 */
161- #define ItemPointerCopy (fromPointer , toPointer ) \
162- ( \
163- AssertMacro(PointerIsValid(toPointer)), \
164- AssertMacro(PointerIsValid(fromPointer)), \
165- *(toPointer) = *(fromPointer) \
166- )
171+ static inline void
172+ ItemPointerCopy (const ItemPointerData * fromPointer , ItemPointerData * toPointer )
173+ {
174+ Assert (PointerIsValid (toPointer ));
175+ Assert (PointerIsValid (fromPointer ));
176+ * toPointer = * fromPointer ;
177+ }
167178
168179/*
169180 * ItemPointerSetInvalid
170181 * Sets a disk item pointer to be invalid.
171182 */
172- #define ItemPointerSetInvalid (pointer ) \
173- ( \
174- AssertMacro(PointerIsValid(pointer)), \
175- BlockIdSet(&((pointer)->ip_blkid), InvalidBlockNumber), \
176- (pointer)->ip_posid = InvalidOffsetNumber \
177- )
183+ static inline void
184+ ItemPointerSetInvalid (ItemPointerData * pointer )
185+ {
186+ Assert (PointerIsValid (pointer ));
187+ BlockIdSet (& pointer -> ip_blkid , InvalidBlockNumber );
188+ pointer -> ip_posid = InvalidOffsetNumber ;
189+ }
178190
179191/*
180192 * ItemPointerIndicatesMovedPartitions
181193 * True iff the block number indicates the tuple has moved to another
182194 * partition.
183195 */
184- #define ItemPointerIndicatesMovedPartitions (pointer ) \
185- ( \
186- ItemPointerGetOffsetNumber(pointer) == MovedPartitionsOffsetNumber && \
187- ItemPointerGetBlockNumberNoCheck(pointer) == MovedPartitionsBlockNumber \
188- )
196+ static inline bool
197+ ItemPointerIndicatesMovedPartitions (const ItemPointerData * pointer )
198+ {
199+ return
200+ ItemPointerGetOffsetNumber (pointer ) == MovedPartitionsOffsetNumber &&
201+ ItemPointerGetBlockNumberNoCheck (pointer ) == MovedPartitionsBlockNumber ;
202+ }
189203
190204/*
191205 * ItemPointerSetMovedPartitions
192206 * Indicate that the item referenced by the itempointer has moved into a
193207 * different partition.
194208 */
195- #define ItemPointerSetMovedPartitions (pointer ) \
196- ItemPointerSet((pointer), MovedPartitionsBlockNumber, MovedPartitionsOffsetNumber)
209+ static inline void
210+ ItemPointerSetMovedPartitions (ItemPointerData * pointer )
211+ {
212+ ItemPointerSet (pointer , MovedPartitionsBlockNumber , MovedPartitionsOffsetNumber );
213+ }
197214
198215/* ----------------
199216 * externs
0 commit comments