Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
Skip to content

Commit aeb767c

Browse files
committed
Convert macros to static inline functions (itemptr.h)
Reviewed-by: Amul Sul <sulamul@gmail.com> Discussion: https://www.postgresql.org/message-id/flat/5b558da8-99fb-0a99-83dd-f72f05388517%40enterprisedb.com
1 parent e1df03b commit aeb767c

File tree

1 file changed

+73
-56
lines changed

1 file changed

+73
-56
lines changed

src/include/storage/itemptr.h

Lines changed: 73 additions & 56 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)