Mercurial > cpython-lru_cache-weakref
view Include/node.h @ 19975:4e445a3e07c6 legacy-trunk
Enable two checks for comparing a complex to a complex subtype
instance.
Split a string comparison test in two halves, replacing "a==b==a" with
separate tests for a==b and b==a. (Reason: while experimenting, this
test failed, and I wanted to know if it was the first or the second ==
operator that failed.)
| author | Guido van Rossum <guido@python.org> |
|---|---|
| date | Wed, 19 Sep 2001 01:16:16 +0000 |
| parents | 6f6f965c5e2d |
| children | ba2850408f0a |
line wrap: on
line source
/* Parse tree node interface */ #ifndef Py_NODE_H #define Py_NODE_H #ifdef __cplusplus extern "C" { #endif typedef struct _node { short n_type; char *n_str; int n_lineno; int n_nchildren; struct _node *n_child; } node; extern DL_IMPORT(node *) PyNode_New(int type); extern DL_IMPORT(int) PyNode_AddChild(node *n, int type, char *str, int lineno); extern DL_IMPORT(void) PyNode_Free(node *n); /* Node access functions */ #define NCH(n) ((n)->n_nchildren) #define CHILD(n, i) (&(n)->n_child[i]) #define TYPE(n) ((n)->n_type) #define STR(n) ((n)->n_str) /* Assert that the type of a node is what we expect */ #ifndef Py_DEBUG #define REQ(n, type) { /*pass*/ ; } #else #define REQ(n, type) \ { if (TYPE(n) != (type)) { \ fprintf(stderr, "FATAL: node type %d, required %d\n", \ TYPE(n), type); \ abort(); \ } } #endif extern DL_IMPORT(void) PyNode_ListTree(node *); #ifdef __cplusplus } #endif #endif /* !Py_NODE_H */
