Mercurial > cpython-lru_cache-weakref
view Include/node.h @ 25297:7be26544be4e legacy-trunk
Rearrange the members of struct _node to put shorter fields towards
the end, in the hope of saving some bytes on 64-bit machines. (Too
bad n_nchildren can't be made an unsigned short, but
test/test_longexp.py specifically tests for more than 2**16 subtrees
at one level.)
I don't expect any binary compatibility issues here, unless someone
has an old binary of parsermodule.so saved away.
| author | Guido van Rossum <guido@python.org> |
|---|---|
| date | Tue, 17 Sep 2002 03:24:09 +0000 |
| parents | c1eb668525e1 |
| children | c670945c8695 |
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 { char *n_str; struct _node *n_child; int n_lineno; int n_nchildren; short n_type; } node; PyAPI_FUNC(node *) PyNode_New(int type); PyAPI_FUNC(int) PyNode_AddChild(node *n, int type, char *str, int lineno); PyAPI_FUNC(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 */ #define REQ(n, type) assert(TYPE(n) == (type)) PyAPI_FUNC(void) PyNode_ListTree(node *); #ifdef __cplusplus } #endif #endif /* !Py_NODE_H */
