#define NST_NEST_LEVEL (1<<13)
#define NST_BY_NUMBER (1<<14) /* {n,m} */
+#define NODE_STATUS(node) (((Node* )node)->u.base.status)
#define NODE_STATUS_SET(node,f) ((node)->u.base.status |= (f))
#define NODE_STATUS_CLEAR(node,f) ((node)->u.base.status &= ~(f))
-#define NODE_IS_BY_NUMBER(node) (((node)->u.base.status & NST_BY_NUMBER) != 0)
-#define NODE_IS_IN_REPEAT(node) (((node)->u.base.status & NST_IN_REPEAT) != 0)
-#define NODE_IS_CALLED(node) (((node)->u.base.status & NST_CALLED) != 0)
-#define NODE_IS_RECURSION(node) (((node)->u.base.status & NST_RECURSION) != 0)
+#define NODE_IS_BY_NUMBER(node) ((NODE_STATUS(node) & NST_BY_NUMBER) != 0)
+#define NODE_IS_IN_REPEAT(node) ((NODE_STATUS(node) & NST_IN_REPEAT) != 0)
+#define NODE_IS_CALLED(node) ((NODE_STATUS(node) & NST_CALLED) != 0)
+#define NODE_IS_RECURSION(node) ((NODE_STATUS(node) & NST_RECURSION) != 0)
#define NODE_IS_STOP_BT_SIMPLE_REPEAT(node) \
- (((node)->u.base.status & NST_STOP_BT_SIMPLE_REPEAT) != 0)
-#define NODE_IS_NAMED_GROUP(node) (((node)->u.base.status & NST_NAMED_GROUP) != 0)
-#define NODE_IS_ADDR_FIXED(node) (((node)->u.base.status & NST_ADDR_FIXED) != 0)
-#define NODE_IS_CLEN_FIXED(node) (((node)->u.base.status & NST_CLEN_FIXED) != 0)
-#define NODE_IS_MIN_FIXED(node) (((node)->u.base.status & NST_MIN_FIXED) != 0)
-#define NODE_IS_MAX_FIXED(node) (((node)->u.base.status & NST_MAX_FIXED) != 0)
-#define NODE_IS_MARK1(node) (((node)->u.base.status & NST_MARK1) != 0)
-#define NODE_IS_MARK2(node) (((node)->u.base.status & NST_MARK2) != 0)
-#define NODE_IS_NEST_LEVEL(node) (((node)->u.base.status & NST_NEST_LEVEL) != 0)
-#define NODE_IS_NAME_REF(node) (((node)->u.base.status & NST_NAME_REF) != 0)
+ ((NODE_STATUS(node) & NST_STOP_BT_SIMPLE_REPEAT) != 0)
+#define NODE_IS_NAMED_GROUP(node) ((NODE_STATUS(node) & NST_NAMED_GROUP) != 0)
+#define NODE_IS_ADDR_FIXED(node) ((NODE_STATUS(node) & NST_ADDR_FIXED) != 0)
+#define NODE_IS_CLEN_FIXED(node) ((NODE_STATUS(node) & NST_CLEN_FIXED) != 0)
+#define NODE_IS_MIN_FIXED(node) ((NODE_STATUS(node) & NST_MIN_FIXED) != 0)
+#define NODE_IS_MAX_FIXED(node) ((NODE_STATUS(node) & NST_MAX_FIXED) != 0)
+#define NODE_IS_MARK1(node) ((NODE_STATUS(node) & NST_MARK1) != 0)
+#define NODE_IS_MARK2(node) ((NODE_STATUS(node) & NST_MARK2) != 0)
+#define NODE_IS_NEST_LEVEL(node) ((NODE_STATUS(node) & NST_NEST_LEVEL) != 0)
+#define NODE_IS_NAME_REF(node) ((NODE_STATUS(node) & NST_NAME_REF) != 0)
#define NODE_BODY(node) ((node)->u.base.body)
#define NODE_QTFR_BODY(node) ((node)->body)