summaryrefslogtreecommitdiff
path: root/node.h
diff options
context:
space:
mode:
Diffstat (limited to 'node.h')
-rw-r--r--node.h20
1 files changed, 14 insertions, 6 deletions
diff --git a/node.h b/node.h
index 80db9e8403..d8ee7dbb64 100644
--- a/node.h
+++ b/node.h
@@ -39,9 +39,6 @@ struct node_buffer_struct {
// - location info
// Array, whose entry is array
rb_parser_ary_t *tokens;
-#ifdef UNIVERSAL_PARSER
- const rb_parser_config_t *config;
-#endif
};
RUBY_SYMBOL_EXPORT_BEGIN
@@ -70,16 +67,27 @@ const struct kwtable *rb_reserved_word(const char *, unsigned int);
struct parser_params;
PRINTF_ARGS(void rb_parser_printf(struct parser_params *parser, const char *fmt, ...), 2, 3);
VALUE rb_node_set_type(NODE *n, enum node_type t);
+enum node_type rb_node_get_type(const NODE *n);
RUBY_SYMBOL_EXPORT_END
#define NODE_LSHIFT (NODE_TYPESHIFT+7)
#define NODE_LMASK (((SIGNED_VALUE)1<<(sizeof(VALUE)*CHAR_BIT-NODE_LSHIFT))-1)
-#define nd_line(n) (int)(((SIGNED_VALUE)(n)->flags)>>NODE_LSHIFT)
-#define nd_set_line(n,l) \
- (n)->flags=(((n)->flags&~((VALUE)(-1)<<NODE_LSHIFT))|((VALUE)((l)&NODE_LMASK)<<NODE_LSHIFT))
+static inline int
+nd_line(const NODE *n)
+{
+ if (!n) return -1;
+ SIGNED_VALUE flags = (SIGNED_VALUE)n->flags;
+ return (int)(flags >> NODE_LSHIFT);
+}
+static inline void
+nd_set_line(NODE *n, SIGNED_VALUE l)
+{
+ n->flags &= ~(~(VALUE)0 << NODE_LSHIFT);
+ n->flags |= ((VALUE)(l & NODE_LMASK) << NODE_LSHIFT);
+}
#define NODE_SPECIAL_REQUIRED_KEYWORD ((NODE *)-1)
#define NODE_REQUIRED_KEYWORD_P(node) ((node) == NODE_SPECIAL_REQUIRED_KEYWORD)