diff options
Diffstat (limited to 'constant.h')
| -rw-r--r-- | constant.h | 39 |
1 files changed, 28 insertions, 11 deletions
diff --git a/constant.h b/constant.h index 9354241961..90a68d447a 100644 --- a/constant.h +++ b/constant.h @@ -1,3 +1,5 @@ +#ifndef CONSTANT_H +#define CONSTANT_H /********************************************************************** constant.h - @@ -8,29 +10,44 @@ Copyright (C) 2009 Yusuke Endoh **********************************************************************/ -#ifndef CONSTANT_H -#define CONSTANT_H +#include "ruby/ruby.h" +#include "id_table.h" typedef enum { + CONST_DEPRECATED = 0x100, + + CONST_VISIBILITY_MASK = 0xff, CONST_PUBLIC = 0x00, - CONST_PRIVATE = 0x01 + CONST_PRIVATE, + CONST_VISIBILITY_MAX } rb_const_flag_t; +#define RB_CONST_PRIVATE_P(ce) \ + (((ce)->flag & CONST_VISIBILITY_MASK) == CONST_PRIVATE) +#define RB_CONST_PUBLIC_P(ce) \ + (((ce)->flag & CONST_VISIBILITY_MASK) == CONST_PUBLIC) + +#define RB_CONST_DEPRECATED_P(ce) \ + ((ce)->flag & CONST_DEPRECATED) + typedef struct rb_const_entry_struct { rb_const_flag_t flag; - VALUE value; /* should be mark */ - VALUE file; int line; + VALUE value; /* should be mark */ + VALUE file; /* should be mark */ } rb_const_entry_t; -VALUE rb_mod_private_constant(int argc, VALUE *argv, VALUE obj); -VALUE rb_mod_public_constant(int argc, VALUE *argv, VALUE obj); -void rb_free_const_table(st_table *tbl); -VALUE rb_public_const_get(VALUE klass, ID id); +VALUE rb_mod_private_constant(int argc, const VALUE *argv, VALUE obj); +VALUE rb_mod_public_constant(int argc, const VALUE *argv, VALUE obj); +VALUE rb_mod_deprecate_constant(int argc, const VALUE *argv, VALUE obj); +void rb_free_const_table(struct rb_id_table *tbl); +VALUE rb_const_source_location(VALUE, ID); + +int rb_autoloading_value(VALUE mod, ID id, VALUE *value, rb_const_flag_t *flag); +rb_const_entry_t *rb_const_lookup(VALUE klass, ID id); VALUE rb_public_const_get_at(VALUE klass, ID id); VALUE rb_public_const_get_from(VALUE klass, ID id); -int rb_public_const_defined(VALUE klass, ID id); -int rb_public_const_defined_at(VALUE klass, ID id); int rb_public_const_defined_from(VALUE klass, ID id); +VALUE rb_const_source_location_at(VALUE, ID); #endif /* CONSTANT_H */ |
