1 /**
2   Mirror _node.h
3 
4   Parse tree node interface
5   */
6 module deimos.python.node;
7 
8 extern(C):
9 // Python-header-file: Include/node.h
10 /// _
11 struct node {
12     /// _
13     short	n_type;
14     /// _
15     char*	n_str;
16     /// _
17     int		n_lineno;
18     version(Python_2_5_Or_Later){
19         /// Availability: >= 2.5
20         int		n_col_offset;
21     }
22     /// _
23     int		n_nchildren;
24     /// _
25     node*	n_child;
26 }
27 /// _
28 node* PyNode_New(int type);
29 /// _
30 int PyNode_AddChild(node* n, int type,
31         char* str, int lineno, int col_offset);
32 /// _
33 void PyNode_Free(node* n);
34 /// _
35 void PyNode_ListTree(node*);
36 
37 /** Node access functions */
38 auto NCH()(node* n) {
39     return n.nchildren;
40 }
41 /// _
42 auto CHILD()(node* n, size_t i) {
43     return n.n_child[i];
44 }
45 /// _
46 auto RCHILD()(node* n, size_t i) {
47     return CHILD(n, NCH(n)+i);
48 }
49 /// _
50 auto TYPE()(node* n) {
51     return n.n_type;
52 }
53 /// _
54 auto STR()(node* n) {
55     return n.n_str;
56 }