tenderlove
b3803cc49a
* hash.c (initialize_copy): copy the underlying st_table on dup,
...
rather than copying the hash key by key. [ruby-core:48009]
* test/ruby/test_hash.rb: relevant tests for initialize_copy
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@37232 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-10-16 21:33:59 +00:00
nobu
8d6add973e
hash.c: raise on invalid input
...
* hash.c (rb_hash_s_create): raise an exception, when input elements
are not one or two elements arrays. [ruby-core:39945] [Bug #5406 ]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@36391 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-07-14 08:08:15 +00:00
nobu
b0dd250dc9
use RB_TYPE_P() instead of comparison of TYPE()
...
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@35763 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-05-23 07:13:21 +00:00
nobu
770ddcdfe0
* hash.c, object.c, struct.c, lib/ostruct.rb: add to_h methods.
...
[Feature #6276 ]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@35452 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-04-24 03:46:55 +00:00
naruse
62c9ecfa12
Revert r35339-35343 because of no tests.
...
* hash.c: Alias ENV.to_h to ENV.to_hash [ref #6276 ]
* lib/ostruct.rb: Add OpenStruct#to_h [Feature #6276 ]
* struct.c: Add Struct#to_h [Feature #6276 ]
* object.c: Add NilClass#to_h [Feature #6276 ]
* hash.c: Add Hash#to_h [Feature #6276 ]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@35383 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-04-18 03:59:15 +00:00
marcandre
fc7676fcd6
* hash.c: Alias ENV.to_h to ENV.to_hash [ref #6276 ]
...
[rubyspec:6587eead7cd1]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@35343 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-04-16 03:16:40 +00:00
marcandre
f92be2c01a
* hash.c: Add Hash#to_h [Feature #6276 ]
...
[rubyspec:84b7fe3f24d2]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@35339 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-04-16 03:15:42 +00:00
nobu
723bfaba59
* hash.c (no_new_key): moved test to raise outside.
...
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@35318 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-04-13 11:30:39 +00:00
naruse
99d38f82e0
* hash.c (inspect_i): keep string's coderange.
...
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@35317 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-04-13 08:39:13 +00:00
nobu
2d74f3e682
* hash.c (rb_hash_aset, rb_hash_update, rb_hash_update_by): use
...
st_update() to reduce evaluation of hash values.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@35316 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-04-13 06:26:53 +00:00
nobu
e2aaf978b5
* hash.c: use RHASH_ITER_LEV(), not iter_leve directly.
...
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@35309 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-04-12 06:10:31 +00:00
marcandre
6b18a8c2e9
* hash.c (rb_hash_set_default_proc): Accept nil, patch by Run Paint
...
[Feature #4234 ]
* test/ruby/test_hash.rb: test for above.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@35268 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-04-09 04:07:53 +00:00
nobu
160d02d830
* hash.c (hash_default_value): extract from rb_hash_aref(), to be
...
shared with rb_hash_shift(), so that overriding Hash#default
will be respected.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@35197 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-03-31 05:23:01 +00:00
nobu
e8a1874c19
* hash.c: do not allocate st_table when it is not necessary.
...
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@35195 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-03-31 05:16:04 +00:00
nobu
a3626110d9
* hash.c: remove unnecessary checks for Qundef in hash iterations.
...
since hash use st_foreach_check for iterations, such checks are
needless.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@35193 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-03-31 04:20:45 +00:00
nobu
197627354e
* st.c (st_foreach_check): remove the entry by replacing with never
...
when ST_DELETE.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@35186 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-03-30 22:53:26 +00:00
nobu
d0380e2e56
* hash.c (st_foreach_safe): since table is not for VALUE, Qundef is
...
not special value, so use 0 instead. therefore this function can be
applied to only st_table which 0 is invalid as keys, e.g., IDs.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@35185 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-03-30 22:47:33 +00:00
nobu
4fa3236600
* hash.c: Qundef cannot be passed from st_foreach_check().
...
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@35184 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-03-30 22:44:33 +00:00
nobu
4b3a1f77e1
* hash.c, marshal.c, object.c, variable.c: fix callback argument types
...
of iterators.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@35183 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-03-30 22:40:54 +00:00
usa
f59caa2950
* hash.c (env_str_new, rb_f_getenv, env_fetch): use rb_str_conv_enc()
...
instead of rb_str_encode() to simplify the code.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@35031 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-03-15 04:49:20 +00:00
usa
fcaee4bd64
* win32/win32.c, include/ruby/win32.h (rb_w32_ugetenv): new API to
...
accept and to return UTF-8 strings.
* win32/win32.c (rb_w32_getenv): follow above change.
* win32/win32.c (rb_w32_get_environ): returns UTF-8 environment area.
* hash.c (env_str_new, rb_f_getenv, env_fetch): follow above changes.
[Bug #5570 ] [ruby-core:40737]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@35030 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-03-15 03:57:02 +00:00
marcandre
7316302483
* include/ruby/intern.h: Add rb_check_arity, rb_error_arity [ #6085 ]
...
* array.c: Use rb_check_arity / rb_error_arity
* class.c: ditto
* enumerator.c: ditto
* eval.c: ditto
* file.c: ditto
* hash.c: ditto
* numeric.c: ditto
* proc.c: ditto
* process.c: ditto
* random.c: ditto
* re.c: ditto
* signal.c: ditto
* string.c: ditto
* struct.c: ditto
* transcode.c: ditto
* vm_eval.c: ditto
* vm_insnhelper.c: ditto & implementation of rb_error_arity
* test/ruby/test_arity.rb: tests for above
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@35024 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-03-14 21:10:34 +00:00
nobu
a73d958c33
* st.c: add st_foreach_check for fixing iteration over packed table
...
and st_delete_safe. patched by Sokolov Yura at
https://github.com/ruby/ruby/pull/84
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@34963 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-03-10 14:52:19 +00:00
ktsj
b212b84fc1
* hash.c: remove trailing spaces.
...
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@34895 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-03-04 13:59:23 +00:00
drbrain
0e0286404f
* hash.c (Init_Hash): Add section on how objects are used as Hash keys
...
and how to use custom classes as Hash keys.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@34771 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-02-23 23:03:39 +00:00
nobu
ca9b0f56fc
* hash.c (rb_any_hash): treat Qundef like as other special constants.
...
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@34723 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-02-21 11:23:50 +00:00
nobu
bc3b4ddddd
* hash.c (hash_foreach_iter): fix signature.
...
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@34722 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-02-21 11:22:49 +00:00
nobu
413f24d3b0
* whitespace cleanup.
...
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@33634 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-11-04 07:19:23 +00:00
akr
2bb5441808
* complex.c: use "__sun" instead of "__sun__" to detect SunOS.
...
* math.c: ditto.
* hash.c: ditto.
* atomic.h: ditto.
* ext/io/wait/wait.c: ditto.
[ruby-dev:44693]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@33521 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-10-24 14:57:08 +00:00
nobu
12c497dcf6
* hash.c (identhash): share with type_numhash.
...
* st.c (st_hashtype_num): rename from type_numhash.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@33476 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-10-18 14:28:58 +00:00
drbrain
6f8f555d2f
* hash.c (Init_Hash): Improve Hash documentation. Patch by Alvaro
...
Pereyra Rabanal. [Ruby 1.9 - Bug #5405 ]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@33406 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-10-04 20:57:07 +00:00
nobu
8e6e8e6288
* use RB_TYPE_P which is optimized for constant types, instead of
...
comparison with TYPE.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@33357 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-09-29 11:07:45 +00:00
nobu
86bbfdadf3
* hash.c (recursive_hash): hash value of emptied hash should be
...
equal to an empty hash. [ruby-core:38650]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@32810 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-08-02 03:03:18 +00:00
drbrain
b57a0d44f9
* hash.c: Document ENV
...
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@32311 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-06-30 00:20:15 +00:00
drbrain
926301969f
* math.c: Attach documentation for Math.
...
* object.c: Document NIL, TRUE, FALSE.
* io.c: Improve grammar in ARGF comment. Document STDIN/OUT/ERR.
Document ARGF global constant.
* lib/rake: Hide deprecated toplevel constants from RDoc (import from
rake trunk).
* lib/thwait.rb: Document ThWait.
* lib/mathn.rb: Hide Math redefinition from RDoc
* lib/sync.rb: Add a basic comment for Sync_m, Synchronizer_m, Sync,
Synchronizer.
* parse.y: Document SCRIPT_LINES__.
* hash.c: Document ENV class and global constant.
* vm.c: Document TOPLEVEL_BINDING.
* version.c: Document RUBY_* constants.
* ruby.c: Document DATA and ARGV.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@32281 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-06-29 03:09:34 +00:00
naruse
145fccbd42
* hash.c (rb_hash_reject): add documentation that Hash#reject
...
without block returns enumerator.
patched by Michael Edgar [Bug #4847 ] [ruby-core:36800]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@32238 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-06-26 15:45:47 +00:00
akr
5ed8c08aa0
* eval.c, hash.c, load.c, proc.c, range.c, thread.c, time.c: don't
...
declare internal functions.
* internal.h, vm_core.h: declare internal functions.
* array.c: include internal.h.
* common.mk: update dependency for array.o.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@32165 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-06-18 08:26:19 +00:00
akr
e7996eb3cc
* internal.h: declare internal functions here.
...
* node.h: declare NODE dependent internal functions here.
* iseq.h: declare rb_iseq_t dependent internal functions here.
* vm_core.h: declare rb_thread_t dependent internal functions here.
* bignum.c, class.c, compile.c, complex.c, cont.c, dir.c, encoding.c,
enumerator.c, error.c, eval.c, file.c, gc.c, hash.c, inits.c, io.c,
iseq.c, load.c, marshal.c, math.c, numeric.c, object.c, parse.y,
proc.c, process.c, range.c, rational.c, re.c, ruby.c, string.c,
thread.c, time.c, transcode.c, variable.c, vm.c,
tool/compile_prelude.rb: don't declare internal functions declared
in above headers. include above headers if required.
Note that rb_thread_mark() was declared as
void rb_thread_mark(rb_thread_t *th) in cont.c but defined as
void rb_thread_mark(void *ptr) in vm.c. Now it is declared as
the later in internal.h.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@32156 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-06-17 22:43:38 +00:00
drbrain
f6809f61d6
* hash.c (key_i): Change rdoc from "the first occurence" to "an
...
occurrence" since first occurrence is not a specification of
Hash#key. [Ruby 1.9 - Bug #4760 ]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@31878 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-05-31 22:35:59 +00:00
drbrain
317e2a5021
* hash.c: Improve documentation of Hash#key. Patch by Utkarsh
...
Kukreti. [Ruby 1.9 - Bug #4760 ]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@31705 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-05-22 23:37:03 +00:00
arton
11e4052295
* hash.c (ruby_setenv): check env process block size with OS ver.
...
* win32/win32.c: export rb_w32_osver for above patch.
* include/ruby/win32.h: declare rb_w32_osver for Win32 Libs.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@31132 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-03-19 16:33:59 +00:00
arton
bdc8f4fca9
* hash.c: refactoring prior patch (getenvsize win32 specfic function).
...
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@31131 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-03-19 10:00:51 +00:00
arton
5281610f91
* hash.c (ruby_setenv): calculate total env block size for win32.
...
* test/ruby/test_env.rb: add test for above patch.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@31130 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-03-19 09:28:49 +00:00
arton
812550b977
* hash.c (ruby_setenv): checking with max process environment block size fow Win32.
...
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@31129 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-03-19 08:10:08 +00:00
usa
45f59656ae
* hash.c (ruby_setenv): MSDN says that Windows XP or earlier limits
...
the total size of environment block to 5,120 chars. and on such
OS, putenv() causes SEGV. So, ruby should limit the size of an
environment variable to 5,120 bytes for workaround.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@31063 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-03-08 07:52:19 +00:00
naruse
7798b9667e
* hash.c (inspect_i): copy the encoding of the first key as
...
an initial encoding.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@30879 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-02-15 07:08:20 +00:00
nobu
46142e472f
* hash.c (rb_hash_fetch_m): use useful message for longer key, not a
...
nonsense id value.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@30730 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-01-30 04:03:19 +00:00
kosaki
1e60af4d67
* hash.c (rb_hash_fetch_m): add GC guard to prevent intermediate
...
variable from GC.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@30683 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-01-27 17:36:32 +00:00
nobu
79654f3fd3
* hash.c (hash_i): return different values for inverse hash.
...
[ruby-core:34334]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@30514 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-01-11 23:37:15 +00:00
akr
7b5e72c3a9
* hash.c: parenthesize macro arguments.
...
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@30214 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-12-14 22:18:39 +00:00