What about a castNode() macro?
| От | Andres Freund |
|---|---|
| Тема | What about a castNode() macro? |
| Дата | |
| Msg-id | 20140429155537.GA3806@awork2.anarazel.de обсуждение исходный текст |
| Ответы |
Re: What about a castNode() macro?
|
| Список | pgsql-hackers |
Hi,
There's a repeated pattern of
Assert(IsA(ptr, nodetype));
foo = (nodetype *) ptr;
how about adding a castNode() that combines those? Something like:
#if !defined(USE_ASSERT_CHECKING)
#define castNode(nodeptr,_type_) \((_type_ *) (nodeptr))
#elif defined(__GNUC__)
#define castNode(nodeptr,_type_) \((_type_ *) ({ \ Node *_result; \ _result = nodeptr; \ Assert(IsA(_result,
_type_));\ _result; \}))
#else
extern PGDLLIMPORT Node *newNodeMacroHolder;
#define castNode(nodePtr,_type_) \( \ newNodeMacroHolder = nodePtr, \ AssertMacro(IsA(newNodeMacroHolder,
_type_)),\ (_type_ *) newNodeMacroHolder \)
#endif
Greetings,
Andres Freund
-- Andres Freund http://www.2ndQuadrant.com/PostgreSQL Development, 24x7 Support, Training &
Services
В списке pgsql-hackers по дате отправления: