From 29f237a8b1df650089b54447f070726c75706b6f Mon Sep 17 00:00:00 2001 From: Yukihiro Matsumoto Date: Fri, 14 Oct 1994 06:19:03 +0900 Subject: version 0.54 https://cache.ruby-lang.org/pub/ruby/1.0/ruby-0.54.tar.gz --- dict.c | 32 +++++++++++++++++++------------- 1 file changed, 19 insertions(+), 13 deletions(-) (limited to 'dict.c') diff --git a/dict.c b/dict.c index 419918f3a4..e679c331a4 100644 --- a/dict.c +++ b/dict.c @@ -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); } -- cgit v1.2.3