diff options
author | Yukihiro Matsumoto <matz@ruby-lang.org> | 1994-10-14 06:19:03 +0900 |
---|---|---|
committer | Takashi Kokubun <takashikkbn@gmail.com> | 2019-08-17 22:09:30 +0900 |
commit | 29f237a8b1df650089b54447f070726c75706b6f (patch) | |
tree | e6ee836a39a5f2f1d433d6532de32471b655fb6d /dict.c | |
parent | 173976c97c9426aa8d96e53aef6c0e570c5fdfda (diff) |
version 0.54v0_54
https://cache.ruby-lang.org/pub/ruby/1.0/ruby-0.54.tar.gz
Diffstat (limited to 'dict.c')
-rw-r--r-- | dict.c | 32 |
1 files changed, 19 insertions, 13 deletions
@@ -13,7 +13,9 @@ #include "ruby.h" #include "st.h" -VALUE C_Dict, C_EnvDict; +VALUE C_Dict; + +static VALUE envtbl; static ID hash, eq; VALUE Fgetenv(), Fsetenv(); @@ -521,11 +523,16 @@ Fsetenv(obj, name, value) return FALSE; /* not reached */ } +static VALUE +Fenv_to_s() +{ + return str_new2("$ENV"); +} + Init_Dict() { - extern VALUE C_Builtin; + extern VALUE C_Kernel; extern VALUE M_Enumerable; - static VALUE envtbl; hash = rb_intern("hash"); eq = rb_intern("=="); @@ -567,17 +574,16 @@ Init_Dict() rb_define_method(C_Dict,"has_value", Fdic_has_value, 1); - C_EnvDict = rb_define_class("EnvDict", C_Object); - - rb_include_module(C_EnvDict, M_Enumerable); + envtbl = obj_alloc(C_Object); + rb_define_single_method(envtbl,"[]", Fgetenv, 1); + rb_define_single_method(envtbl,"[]=", Fsetenv, 2); + rb_define_single_method(envtbl,"each", Fenv_each, 0); + rb_define_single_method(envtbl,"delete", Fenv_delete, 1); + rb_define_single_method(envtbl,"to_s", Fenv_to_s, 0); + rb_include_module(CLASS_OF(envtbl), M_Enumerable); - rb_define_method(C_EnvDict,"[]", Fgetenv, 1); - rb_define_method(C_EnvDict,"[]=", Fsetenv, 2); - rb_define_method(C_EnvDict,"each", Fenv_each, 0); - rb_define_method(C_EnvDict,"delete", Fenv_delete, 1); - envtbl = obj_alloc(C_EnvDict); rb_define_variable("$ENV", &envtbl, Qnil, rb_readonly_hook); - rb_define_method(C_Builtin, "getenv", Fgetenv, 1); - rb_define_method(C_Builtin, "setenv", Fsetenv, 2); + rb_define_private_method(C_Kernel, "getenv", Fgetenv, 1); + rb_define_private_method(C_Kernel, "setenv", Fsetenv, 2); } |