@@ -71,85 +71,95 @@ typedef ItemPointerData *ItemPointer;
71
71
72
72
73
73
/* ----------------
74
- * support macros
74
+ * support functions
75
75
* ----------------
76
76
*/
77
77
78
78
/*
79
79
* ItemPointerIsValid
80
80
* True iff the disk item pointer is not NULL.
81
81
*/
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
+ }
84
87
85
88
/*
86
89
* ItemPointerGetBlockNumberNoCheck
87
90
* Returns the block number of a disk item pointer.
88
91
*/
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
+ }
93
97
94
98
/*
95
99
* ItemPointerGetBlockNumber
96
100
* As above, but verifies that the item pointer looks valid.
97
101
*/
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
+ }
103
108
104
109
/*
105
110
* ItemPointerGetOffsetNumberNoCheck
106
111
* Returns the offset number of a disk item pointer.
107
112
*/
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
+ }
112
118
113
119
/*
114
120
* ItemPointerGetOffsetNumber
115
121
* As above, but verifies that the item pointer looks valid.
116
122
*/
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
+ }
122
129
123
130
/*
124
131
* ItemPointerSet
125
132
* Sets a disk item pointer to the specified block and offset.
126
133
*/
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
+ }
133
141
134
142
/*
135
143
* ItemPointerSetBlockNumber
136
144
* Sets a disk item pointer to the specified block.
137
145
*/
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
+ }
143
152
144
153
/*
145
154
* ItemPointerSetOffsetNumber
146
155
* Sets a disk item pointer to the specified offset.
147
156
*/
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
+ }
153
163
154
164
/*
155
165
* ItemPointerCopy
@@ -158,42 +168,49 @@ typedef ItemPointerData *ItemPointer;
158
168
* Should there ever be padding in an ItemPointer this would need to be handled
159
169
* differently as it's used as hash key.
160
170
*/
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
+ }
167
178
168
179
/*
169
180
* ItemPointerSetInvalid
170
181
* Sets a disk item pointer to be invalid.
171
182
*/
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
+ }
178
190
179
191
/*
180
192
* ItemPointerIndicatesMovedPartitions
181
193
* True iff the block number indicates the tuple has moved to another
182
194
* partition.
183
195
*/
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
+ }
189
203
190
204
/*
191
205
* ItemPointerSetMovedPartitions
192
206
* Indicate that the item referenced by the itempointer has moved into a
193
207
* different partition.
194
208
*/
195
- #define ItemPointerSetMovedPartitions (pointer ) \
196
- ItemPointerSet((pointer), MovedPartitionsBlockNumber, MovedPartitionsOffsetNumber)
209
+ static inline void
210
+ ItemPointerSetMovedPartitions (ItemPointerData * pointer )
211
+ {
212
+ ItemPointerSet (pointer , MovedPartitionsBlockNumber , MovedPartitionsOffsetNumber );
213
+ }
197
214
198
215
/* ----------------
199
216
* externs
0 commit comments