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 по дате отправления: