summaryrefslogtreecommitdiff
path: root/node.h
diff options
context:
space:
mode:
authormatz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2004-11-17 02:27:38 +0000
committermatz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2004-11-17 02:27:38 +0000
commit288ceaeec2077d06df3ba46bca97960f76f283e1 (patch)
tree8593a93244c96b098dd6611ee7e4dfe2c7ba9957 /node.h
parent3ad741f132133bb542a84a01d8e7644fc4b51e4c (diff)
* re.c (rb_reg_initialize_m): should raise exception instead of
compile error. [ruby-core:03755] * string.c (rb_str_splice): move rb_str_modify() after StringValue(), which may alter the receiver. [ruby-dev:24878] * error.c (rb_error_frozen): now raise RuntimeError instead of TypeError. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@7294 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'node.h')
-rw-r--r--node.h13
1 files changed, 7 insertions, 6 deletions
diff --git a/node.h b/node.h
index df822462e5..6c8acb59b0 100644
--- a/node.h
+++ b/node.h
@@ -156,21 +156,22 @@ typedef struct RNode {
#define RNODE(obj) (R_CAST(RNode)(obj))
-#define NODE_TYPESHIFT 7
-#define NODE_TYPEMASK (0xff<<NODE_TYPESHIFT)
+/* 0..4:T_TYPES, 5:FL_MARK, 6:reserved, 7:NODE_NEWLINE */
+#define NODE_NEWLINE (1<<7)
-#define nd_type(n) ((int)(((RNODE(n))->flags>>NODE_TYPESHIFT)&0x7f))
+#define NODE_TYPESHIFT 8
+#define NODE_TYPEMASK (0x7f<<NODE_TYPESHIFT)
+
+#define nd_type(n) ((int) (((RNODE(n))->flags & NODE_TYPEMASK)>>NODE_TYPESHIFT))
#define nd_set_type(n,t) \
RNODE(n)->flags=((RNODE(n)->flags&~NODE_TYPEMASK)|(((t)<<NODE_TYPESHIFT)&NODE_TYPEMASK))
-#define NODE_LSHIFT (NODE_TYPESHIFT+8)
+#define NODE_LSHIFT (NODE_TYPESHIFT+7)
#define NODE_LMASK (((long)1<<(sizeof(NODE*)*CHAR_BIT-NODE_LSHIFT))-1)
#define nd_line(n) ((unsigned int)(((RNODE(n))->flags>>NODE_LSHIFT)&NODE_LMASK))
#define nd_set_line(n,l) \
RNODE(n)->flags=((RNODE(n)->flags&~(-1<<NODE_LSHIFT))|(((l)&NODE_LMASK)<<NODE_LSHIFT))
-#define NODE_NEWLINE FL_USER7
-
#define nd_head u1.node
#define nd_alen u2.argc
#define nd_next u3.node