Граф коммитов

707 Коммитов

Автор SHA1 Сообщение Дата
nobu 37dd754e97 * string.c (rb_str_chomp_bang): keeps 7bit coderange.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@22774 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-03-05 01:24:57 +00:00
nobu dd43561fd6 * string.c (rb_str_each_line): constified.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@22612 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-02-25 03:29:25 +00:00
nobu 43b9684962 * string.c (rb_str_force_encoding): should clear coderange at changing
encoding.  [ruby-core:22437]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@22611 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-02-25 03:28:00 +00:00
nobu 6dd9388545 * string.c (rb_str_chomp_bang): coderange may change.
[ruby-core:22414]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@22608 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-02-24 17:28:56 +00:00
nobu 42eeb2c1b1 * string.c (rb_str_delete_bang): should recalculate coderange.
[ruby-talk:329267]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@22606 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-02-24 17:17:35 +00:00
nobu 83930529b2 stripped trailing spaces.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@22553 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-02-22 14:26:27 +00:00
nobu 624d07b0e4 * string.c (tr_trans): should recalculate coderange.
[ruby-core:22326] (reopened at [ruby-core:22328])


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@22547 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-02-22 13:42:22 +00:00
nobu bc59123dc0 * string.c (tr_trans): should not be affected by the encoding of
replacement unless actually modified.  [ruby-talk:328967]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@22505 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-02-22 05:33:07 +00:00
nobu 1128e61562 * array.c (rb_ary_resurrect), string.c (rb_str_resurrect): new
functions based on [ruby-dev:37983]

* insns.def (putstring, duparray): use rb_{ary,str}_resurrect().

* iseq.c (iseq_data_to_ary): needs to result TS_VALUE.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@22395 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-02-18 05:33:36 +00:00
nobu 62dd7a00fc * string.c (rb_str_shared_replace): no need for
str_make_independent.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@22368 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-02-17 03:50:59 +00:00
mame e722ad99d5 * string.c (rb_hash_uint32, rb_hash_uint, rb_hash_start, rb_hash_end),
include/ruby/intern.h: add Murmurhash API.  [ruby-dev:37784]

* complex.c (nucomp_hash), array.c (rb_ary_hash), time.c (time_hash),
  string.c (rb_str_hsah), object.c (rb_obj_hash), range.c
  (range_hash), struct.c (rb_struct_hash), hash.c (rb_any_hash),
  rational.c (nurat_hash): use Murmurhash.  [ruby-dev:37784]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@22317 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-02-14 19:55:34 +00:00
naruse 28eb7acf2c * string.c (rb_external_str_new_with_enc): change evaluatioin order
for speed.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@22297 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-02-13 22:31:46 +00:00
nobu e52da91987 * compile.c (compile_array_, defined_expr, iseq_compile_each): hide
and freeze internal literal objects, to prevent from modifying.
  [ruby-dev:37959]

* iseq.c (insn_operand_intern): copy internal literal objects.

* insns.def (putstring, duparray): ditto.

* string.c (rb_str_replace): exported.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@22255 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-02-12 10:42:36 +00:00
matz 68ac487d19 * string.c (rb_str_each_codepoint): update RDoc for
String#codepoints.  a patch from Radoslaw Bulat in
  [ruby-core:21835]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@22083 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-02-05 17:53:26 +00:00
akr 6ae8b15d93 * string.c (rb_str_dump): use MBCLEN_CHARFOUND_P properly.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@22036 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-02-04 12:58:30 +00:00
nobu c5dea4c69d * string.c (hash): suppress a warning.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@21714 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-01-21 06:26:51 +00:00
nobu e77a0b7b24 * string.c (hash): fixed the tail bytes handling in the aligned
access case.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@21684 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-01-20 04:02:42 +00:00
nobu d66c0cf368 * string.c (hash): fixed typo. [ruby-dev:37791]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@21675 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-01-19 18:42:46 +00:00
nobu 42d9223a2d * string.c (hash): defaulted to MurmurHash 2.0.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@21667 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-01-19 08:32:41 +00:00
nobu 768988f918 * string.c (hash): added MurmurHash 2.0.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@21663 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-01-19 07:32:42 +00:00
matz 5e62997245 * string.c (rb_external_str_new_with_enc): set ASCII-8BIT if
encoding is US-ASCII and string contains 8bit characters.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@20952 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-12-23 15:13:18 +00:00
matz f77f9da445 * string.c (rb_str_upto): should return enumerator if called
without block.  [ruby-dev:37526]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@20906 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-12-22 02:12:37 +00:00
nobu 6bcd363ebf * string.c (rb_str_hash): gets rid of collisions between different
encoding strings.  [ruby-core:20526]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@20804 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-12-17 02:01:37 +00:00
matz 3d28b3bf3b * string.c (sym_printable): wrong condition for string iteration.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@20724 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-12-13 10:35:06 +00:00
matz 0241c6506f * string.c (sym_inspect): quote if symbol contains non-printable
characters.  [ruby-dev:37398]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@20723 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-12-13 08:09:23 +00:00
matz d6023d88a2 * string.c (sym_equal): remove documentation error "Otherwise,
compares them as strings".  [ruby-dev:37398]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@20722 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-12-13 08:07:40 +00:00
nobu dab7d5d8e3 * string.c (rb_string_value_ptr, rb_to_id): do not use a side
effect expression in RSTRING_PTR.

* string.c (rb_str_split_m): simplified the argument of
  RSTRING_LEN.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@20651 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-12-12 01:19:23 +00:00
nobu cc1401e504 * string.c (rb_str_cmp_m): fixed rdoc. pointed out by <Thomas
C. Mitchell AT gmail.com> at [ruby-talk:321967]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@20534 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-12-05 01:01:53 +00:00
nobu 53e7e2d2a1 * string.c (sym_to_proc): tabified.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@20529 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-12-04 16:39:07 +00:00
nobu c7bd98b7b8 * string.c (sym_to_proc): use hidden object.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@20527 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-12-04 16:35:10 +00:00
nobu f149326740 * string.c (sym_to_proc): caches Symbol procs, based on a patch from
Shumpei Akai <admin AT flexfrank.net>.  [ruby-dev:37265]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@20521 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-12-04 15:17:21 +00:00
nobu cc7ff9d2f9 * include/ruby/intern.h (rb_{external,locale}_str_new_cstr): optimized
versions for literal strings.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@20224 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-11-11 18:31:06 +00:00
matz 80d16e7403 * ext/curses/curses.c: curses encoding should obey locale.
* ext/curses/curses.c (curses_getch): 1.9 getch should return one
  character string for single byte string.  wchar_t support may
  follow in the future.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@20145 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-11-07 21:42:24 +00:00
matz 1d8b7bc624 * string.c (Init_String): remove Symbol#===. [ruby-dev:37026]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@20125 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-11-06 22:18:34 +00:00
matz f27e4c045f * string.c (rb_str_check_dummy_enc): new function to check dummy
encoding.

* string.c (rb_str_upcase_bang): case conversion functions should
  not be applicable to strings in dummy encoding.  [ruby-dev:36985]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@20046 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-10-29 16:44:24 +00:00
mame 6bacaabffd * string.c (rb_str_cmp): fix condition which always returned true
because ENCODING_GET returns unsigned long.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@20043 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-10-29 16:30:02 +00:00
matz 3896936492 * string.c (rb_str_dump): should have removed commented out
unnecessary code.  [ruby-cvs:27131]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@19914 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-10-24 10:58:33 +00:00
shyouhei 78d2b00893 * string.c (rb_str_dump): do not use C++ comment.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@19913 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-10-24 10:30:09 +00:00
matz 5a8db29b59 * string.c (rb_str_dump): use \u{ff} escape for UTF-8 encoding
string.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@19897 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-10-23 06:53:55 +00:00
matz 38c7a687e1 * string.c (rb_str_conv_enc_opts): new function to convert with
specifying ecflags and ecopts.

* ext/zlib/zlib.c (gzfile_newstr): specify ecflags and ecopts for
  conversion using above function.

* ext/zlib/zlib.c (gzfile_newstr): use own rb_econv_t for dummy
  encoding to handling stateful encoding (e.g. iso-2022-jp).
  [ruby-dev:36857]

* ext/zlib/zlib.c (gzfile_getc): ditto.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@19892 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-10-22 16:53:50 +00:00
matz 4a3f2a7bc5 * string.c (rb_external_str_new_with_enc): no implicit strlen call.
[ruby-dev:36854]

* string.c (rb_external_str_new_cstr): new function to create
  string from external NUL terminated C string.

* string.c (rb_locale_str_new_cstr): ditto.

* ext/readline/readline.c: now use rb_locale_str_new_cstr().

* test/sdbm/test_sdbm.rb (TestSDBM#test_delete_with_block):
  deleted key to the block may be a copy of specified key.

* test/dbm/test_dbm.rb (TestDBM#test_delete_with_block): ditto.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@19885 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-10-22 05:55:22 +00:00
matz fa127bbb18 * string.c (rb_external_str_new_with_enc): wrong condition to
calculate strlen().

* ext/readline/readline.c: add encoding support.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@19879 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-10-21 15:52:07 +00:00
matz b6ef272d02 * ext/zlib/zlib.c: remove obsolete prototype macros.
* ext/zlib/zlib.c (struct gzfile): add encoding field to gzfile
  structure.

* ext/zlib/zlib.c (rb_gzreader_getc): now works on characters.

* ext/zlib/zlib.c (rb_gzreader_getbyte): new method to retrieve
  single byte.

* ext/zlib/zlib.c (rb_gzreader_readbyte): ditto.

* ext/zlib/zlib.c (rb_gzreader_each_byte): renamed from each_char

* ext/zlib/zlib.c (rb_gzreader_ungetc): allow unget strings.

* ext/zlib/zlib.c (rb_gzreader_ungetbyte): renamed from ungetc.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@19869 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-10-21 09:18:34 +00:00
matz 6259c87d02 * include/ruby/ruby.h (ExportStringValue): new macro to convert
string in internal encoding to external to export.

* string.c (rb_str_export): new function to do conversion to
  external encoding.

* ext/sdbm/init.c: encoding conversion support.

* ext/dbm/dbm.c: ditto.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@19855 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-10-20 08:05:44 +00:00
matz 52b3e3b97f * string.c (rb_locale_str_new): new function to convert string
from locale to internal encoding.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@19854 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-10-20 07:15:19 +00:00
matz 3f0ec8887f * string.c (rb_external_str_new): a new function to convert from
external encoding to internal encoding.  if something went
  wrong, it returns a string with the external encoding.

* string.c (rb_external_str_new_with_enc): same as above besides
  you can specify the source encoding.

* ruby.c (ruby_set_argv): use rb_external_str_new()

* ruby.c (set_arg0, ruby_script): ditto.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@19834 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-10-18 10:36:20 +00:00
matz 1e8bbf3154 * .gdbinit (rp): REGEXP handling fixed.
* string.c (rb_str_rindex_m): need not to call rb_enc_check on
  regexp.

* re.c (unescape_escaped_nonascii): try ASCII-8BIT encoding for
  broken strings.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@19812 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-10-16 22:21:42 +00:00
matz f2f2cd5bc6 * string.c (rb_str_comparable): string comparison should be
transitive.  [ruby-dev:36484]

* test/ruby/test_m17n_comb.rb (TestM17NComb#test_str_eq): test
  updated.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@19696 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-10-06 03:22:56 +00:00
akr bd421aa2d2 * string.c (rb_str_sub_bang): fix coderange.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@19662 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-10-02 11:46:40 +00:00
matz d370a79c69 * string.c (rb_str_split_m): should use rb_str_subseq() which use
offset and length by bytes.  [ruby-dev:36641]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@19649 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-09-30 16:18:27 +00:00
akr eace50a9d7 * string.c (rb_str_subseq): don't use rb_str_drop_bytes for short
string.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@19628 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-09-29 14:39:20 +00:00
akr ebb3ace825 * string.c (rb_str_subseq): use rb_str_drop_bytes if possible.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@19624 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-09-29 11:56:43 +00:00
nobu 8d397604bf * string.c (str_new): sets empty string to coderange 7bit.
[ruby-core:18993]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@19604 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-09-28 03:04:21 +00:00
usa 00e9e27b69 * string.c (rb_str_rstrip_bang): raise exception when the encoding of
the string is dummy.

	* string.c (rb_str_rstrip_bang): remove nul characters even if the
	  encoding of the string is not single byte optimizable.
	  fixed [ruby-core:18844], reported by Michael Selig.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@19529 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-09-24 14:01:41 +00:00
usa a69021a699 * string.c (rb_str_strip_bang): workaround for VC++8 x64.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@19526 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-09-24 10:04:20 +00:00
matz 922048adee * string.c (rb_str_rstrip_bang): removing mixed spaces and nuls at
the end of strings.  [ruby-dev:36497]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@19518 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-09-24 07:00:43 +00:00
akr e7e5b731c2 * string.c (rb_str_casecmp): make the ordering consistent with
String#<=>.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@19490 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-09-23 12:27:35 +00:00
matz c3e2e0e53f * string.c (rb_str_comparable): make ascii8bit string to be
compatible with any other encoding.

* string.c (rb_str_cmp): use rb_str_comparable() instead of
  rb_enc_compatible() since <=> is a comparison anyway.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@19418 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-09-18 13:17:41 +00:00
akr 081c802cb9 * grapheme cluster implementation reverted. [ruby-dev:36375]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@19417 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-09-18 12:53:25 +00:00
akr 635b15d662 * string.c (rb_str_casecmp): don't use rb_enc_codepoint.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@19398 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-09-17 12:50:52 +00:00
akr a67d4fa01c * include/ruby/oniguruma.h (OnigEncodingTypeST): add precise_ret
argument for mbc_to_code.
  (ONIGENC_MBC_TO_CODE): provide NULL for precise_ret.
  (ONIGENC_MBC_PRECISE_CODEPOINT): defined.

* include/ruby/encoding.h (rb_enc_mbc_precise_codepoint): defined.

* regenc.h (onigenc_single_byte_mbc_to_code): precise_ret argument
  added.
  (onigenc_mbn_mbc_to_code): ditto.

* regenc.c (onigenc_single_byte_mbc_to_code): precise_ret argument
  added.
  (onigenc_mbn_mbc_to_code): ditto.

* string.c (count_utf8_lead_bytes_with_word): removed.
  (str_utf8_nth): removed.
  (str_utf8_offset): removed.
  (str_strlen): UTF-8 codepoint oriented optimization removed.
  (rb_str_substr): ditto.
  (enc_succ_char): use rb_enc_mbc_precise_codepoint.
  (enc_pred_char): ditto.
  (rb_str_succ): ditto.

* encoding.c (rb_enc_ascget): check length with
  rb_enc_mbc_precise_codepoint.
  (rb_enc_codepoint): use rb_enc_mbc_precise_codepoint.

* regexec.c (string_cmp_ic): add text_end argument.
  (match_at): check end of character after exact string matches.

* enc/utf_8.c (graphme_table): defined for extended graphme cluster
  boundary.
  (grapheme_cmp): defined.
  (get_grapheme_properties): defined.
  (grapheme_boundary_p): defined.
  (MAX_BYTES_LENGTH): defined.
  (comb_char_enc_len): defined.
  (mbc_to_code0): extracted from mbc_to_code.
  (mbc_to_code): use mbc_to_code0.
  (left_adjust_combchar_head): defined.
  (utf_8): use a extended graphme cluster as a unit.

* enc/unicode.c (onigenc_unicode_mbc_case_fold): use
  ONIGENC_MBC_PRECISE_CODEPOINT to extract codepoints.
  (onigenc_unicode_get_case_fold_codes_by_str): ditto.

* enc/euc_jp.c (mbc_to_code): follow mbc_to_code field change.
  use onigenc_mbn_mbc_to_code.

* enc/shift_jis.c (mbc_to_code): ditto.

* enc/emacs_mule.c (mbc_to_code): ditto.

* enc/gbk.c (gbk_mbc_to_code): follow mbc_to_code field and
  onigenc_mbn_mbc_to_code change.

* enc/cp949.c (cp949_mbc_to_code): ditto.

* enc/big5.c (big5_mbc_to_code): ditto.

* enc/euc_tw.c (euctw_mbc_to_code): ditto.

* enc/euc_kr.c (euckr_mbc_to_code): ditto.

* enc/gb18030.c (gb18030_mbc_to_code): ditto.

* enc/utf_32be.c (utf32be_mbc_to_code): follow mbc_to_code field
  change.

* enc/utf_16be.c (utf16be_mbc_to_code): ditto.

* enc/utf_32le.c (utf32le_mbc_to_code): ditto.

* enc/utf_16le.c (utf16le_mbc_to_code): ditto.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@19389 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-09-16 16:48:05 +00:00
naruse 8b31af74b7 * string.c (rb_str_concat): fix rdoc. (codepoint is integer)
* string.c (rb_str_each_codepoint): use UINT2NUM.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@19385 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-09-16 13:23:16 +00:00
nobu 507658bd54 * string.c (rb_str_crypt): orthodox crypt() sees only first two bytes
of salt.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@19383 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-09-16 12:33:40 +00:00
matz 0df867f933 * string.c (rb_str_each_codepoint): add new methods, #codepoints
and #each_codepoint.  a patch from Michael Selig
  <michael.selig at fs.com.au> in [ruby-core:18532].

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@19379 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-09-16 03:14:41 +00:00
matz 377eb14a9f * string.c ():
* string.c ():

* string.c (single_byte_optimizable): make function inline.  based
  on a patch from Michael Selig <michael.selig at fs.com.au> in
  [ruby-core:18532].

* string.c (str_modify_keep_cr): new function act as
  rb_str_modify(), but don't clear coderange

* string.c (rb_str_casecmp): specialized for single byte strings.

* string.c (rb_str_splice): preserve coderange.

* string.c (rb_str_slice_bang, rb_str_reverse_bang,
  rb_str_upcase_bang, rb_str_downcase_bang, tr_trans,
  rb_str_capitalize_bang, rb_str_swapcase_bang,
  rb_str_delete_bang, rb_str_chop_bang, rb_str_chomp_bang,
  rb_str_lstrip_bang, rb_str_rstrip_bang): ditto.

* string.c (rb_str_clear): preset coderange.

* string.c (rb_str_split_m): specialized for splitting with a
  string.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@19377 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-09-16 00:47:20 +00:00
naruse b0c70a8856 * string.c (rb_str_buf_cat_ascii): codepoint is unsigned int.
* string.c (rb_str_concat): ditto.

* string.c (str_cat_char): ditto.

* string.c (prefix_escape): ditto.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@19371 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-09-15 17:05:00 +00:00
matz b121e47b44 * string.c (rb_str_squeeze_bang): specialized for 7bit characters in
ASCII compatible strings.

* string.c (rb_str_count): ditto.

* string.c (tr_trans): preserve 7bit/valid coderange flag.

* string.c (rb_str_squeeze_bang): preserve previous coderange value.

* string.c (rb_str_lstrip_bang): ditto.

* string.c (rb_str_rstrip_bang): ditto.

* encoding.c (rb_default_external_encoding): preserve
  default_external_encoding in a static variable.

* string.c (single_byte_optimizable): check coderange first, to
  reduce number of calling rb_enc_from_index().

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@19364 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-09-15 14:40:00 +00:00
naruse 0791d297dd * encoding.c (RUBY_MAX_CHAR_LEN): defined.
* encoding.c (str_cat_char): use RUBY_MAX_CHAR_LEN.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@19358 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-09-15 05:36:15 +00:00
akr 19416601a0 * include/ruby/oniguruma.h (OnigEncodingTypeST): add end argument for
left_adjust_char_head.
  (ONIGENC_LEFT_ADJUST_CHAR_HEAD): add end argument.
  (onigenc_get_left_adjust_char_head): ditto.

* include/ruby/encoding.h (rb_enc_left_char_head): add end argument.

* regenc.h (onigenc_single_byte_left_adjust_char_head): ditto.

* regenc.c (onigenc_get_right_adjust_char_head): follow the interface
  change.
  (onigenc_get_right_adjust_char_head_with_prev): ditto.
  (onigenc_get_prev_char_head): ditto.
  (onigenc_step_back): ditto.
  (onigenc_get_left_adjust_char_head): ditto.
  (onigenc_single_byte_code_to_mbc): ditto.

* re.c: ditto.

* string.c: ditto.

* io.c: ditto.

* regexec.c: ditto.

* enc/euc_jp.c: ditto.

* enc/cp949.c: ditto.

* enc/shift_jis.c: ditto.

* enc/gbk.c: ditto.

* enc/big5.c: ditto.

* enc/euc_tw.c: ditto.

* enc/euc_kr.c: ditto.

* enc/emacs_mule.c: ditto.

* enc/gb18030.c: ditto.

* enc/utf_8.c: ditto.

* enc/utf_16le.c: ditto.

* enc/utf_16be.c: ditto.

* enc/utf_32le.c: ditto.

* enc/utf_32be.c: ditto.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@19334 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-09-13 19:23:52 +00:00
akr a953d28e3c * include/ruby/oniguruma.h (onigenc_get_prev_char_head): add end
argument.

* include/ruby/encoding.h (rb_enc_prev_char): ditto.

* regenc.c (onigenc_get_prev_char_head): add end argument.

* regparse.c: follow the interface change.

* regexec.c: ditto.

* string.c: ditto.

* parse.y: ditto.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@19332 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-09-13 18:22:04 +00:00
akr c965010582 * include/ruby/oniguruma.h (onigenc_get_right_adjust_char_head): add
end argument.

* include/ruby/encoding.h (rb_enc_right_char_head): add end argument.

* regenc.c (onigenc_get_right_adjust_char_head): use end argument.

* re.c (rb_reg_adjust_startpos): follow the interface change.

* string.c (rb_str_index): ditto.

* regexec.c (backward_search_range): ditto.
  (onig_search): ditto.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@19330 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-09-13 16:40:31 +00:00
naruse d51b061565 * include/ruby/oniguruma.h (OnigCodePoint): unsigned long to unsigned int.
* include/ruby/encoding.h (rb_enc_codepoint): ditto.

* encoding.c (rb_enc_codepoint): signed int to unsigned int.

* encoding.c (rb_enc_ascget): ditto.

* string.c (rb_str_casecmp): ditto.

* string.c (enc_succ_alnum_char): ditto.

* string.c (rb_str_inspect): ditto.

* string.c (rb_str_upcase_bang): ditto.

* string.c (rb_str_downcase_bang): ditto.

* string.c (rb_str_capitalize_bang): ditto.

* string.c (rb_str_swapcase_bang): ditto.

* string.c (struct tr): ditto.

* string.c (trnext): ditto.

* string.c (tr_trans): ditto.

* string.c (tr_setup_table): ditto.

* string.c (tr_find): ditto.

* string.c (rb_str_delete_bang): ditto.

* string.c (rb_str_squeeze_bang): ditto.

* string.c (rb_str_count): ditto.

* string.c (rb_str_split_m): ditto.

* string.c (rb_str_each_line): ditto.

* string.c (rb_str_lstrip_bang): ditto.

* string.c (rb_str_rstrip_bang): ditto.

* string.c (rb_str_intern): ditto.

* dir.c (char_casecmp): ditto.

* sprintf.c (rb_str_format): ditto.

* enc/emacs_mule.c (mbc_to_code): to be 32bit clean.

* enc/emacs_mule.c (code_to_mbc): ditto.

* enc/gb18030.c (mbc_to_code): ditto.

* enc/gb18030.c (code_to_mbc): ditto.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@19295 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-09-11 10:34:59 +00:00
kazu 6bf5c34cf2 * configure.in: Mac OS X's crypt(2) is broken with invalid salt.
[ruby-dev:35899]
* string.c (rb_str_crypt): ditto.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@19213 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-09-07 08:57:53 +00:00
matz 31b6ea65bb * include/ruby/ruby.h (DBL2NUM): renamed from DOUBLE2NUM.
a patch from Tadashi Saito <shiba at mail2.accsnet.ne.jp>
  in [ruby-dev:36102].

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@19160 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-09-05 18:24:21 +00:00
naruse 56c3432476 * string.c (rb_str_index_m): only regexp uses byte offset.
* string.c (rb_str_rindex_m): ditto.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@18919 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-08-29 09:22:17 +00:00
naruse 7fc16c2377 * encoding.c (rb_enc_compatible): ASCII compatible string and US-ASCII
regexp is compatible. [ruby-dev:36033]

* string.c (rb_str_index_m): second argument is position of character.
  by usa. [ruby-dev:36033]

* string.c (rb_str_rindex_m): ditto.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@18916 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-08-29 02:20:23 +00:00
mame c543447ee0 * string.c (rb_str_shared_replace): remove corrupt noembed string
which causes SEGV.  [ruby-dev:35989]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@18900 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-08-28 14:40:53 +00:00
nobu 5f9c188d97 * include/ruby/ruby.h (rb_intern_const): tiny optimization.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@18653 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-08-16 00:20:31 +00:00
nobu a98587c0fd * string.c (rb_str_drop_bytes): use memmove.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@18645 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-08-15 10:34:06 +00:00
nobu 3622cd196c * configure.in (rb_cv_gcc_function_alias): checks alias attribute.
* string.c (alias_func): replaced with RUBY_ALIAS_FUNCTION.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@18589 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-08-13 15:43:55 +00:00
kouji cdc2278f89 * string.c (alias_func): changed to 'weak, alias' from 'alias' for
Mac OSX. (closes #429)


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@18585 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-08-13 14:09:48 +00:00
shugo f433d710d0 * object.c (rb_obj_untrusted): new method Object#untrusted?.
(rb_obj_untrust): new method Object#untrust.
  (rb_obj_trust): new method Object#trust.
* array.c, debug.c, time.c, include/ruby/ruby.h, re.c, variable.c,
  string.c, io.c, dir.c, vm_method.c, struct.c, class.c, hash.c,
  ruby.c, marshal.c: fixes for Object#untrusted?.
* test/ruby/test_module.rb, test/ruby/test_array.rb,
  test/ruby/test_object.rb, test/ruby/test_string.rb,
  test/ruby/test_marshal.rb, test/ruby/test_hash.rb: added tests for
  Object#untrusted?.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@18568 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-08-13 07:25:05 +00:00
knu 0d242ac61a * string.c: Apply a temporary fix to fix build on OS X. A real
fix will follow later.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@18565 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-08-13 06:53:24 +00:00
naruse 85c41f4fbc * error.c (rb_eEncCompatError): add Exception.
* include/ruby/ruby.h: ditto.

* encoding.c (rb_enc_check): use rb_eEncCompatError.

* string.c (rb_enc_cr_str_buf_cat): ditto.

* string.c (rb_str_sub_bang): ditto.

* string.c (rb_str_hex): ditto.

* string.c (rb_str_oct): ditto.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@18546 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-08-12 18:17:05 +00:00
akr c523f6f15e * string.c (rb_str_splice_0): call rb_str_drop_bytes, not rb_str_drop.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@18543 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-08-12 14:16:43 +00:00
nobu f65719e5c6 * string.c (rb_str_drop_bytes): new function to drop first bytes.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@18541 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-08-12 10:08:48 +00:00
nobu 26bc383ef8 * string.c (rb_str_drop): new function to drop first bytes.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@18540 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-08-12 10:07:08 +00:00
nobu 456dc8bcee * include/ruby/intern.h (rb_str_new2, rb_tainted_str_new2,
rb_usascii_str_new2): use with-length versions with strlen to
  optimize strlen, if optimized.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@18537 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-08-12 09:56:55 +00:00
nobu e2159ba730 * string.c (rb_str_intern): constified.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@18521 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-08-12 07:03:23 +00:00
matz 71553b91f6 * string.c (rb_str_intern): should check symbol table overflow.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@18519 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-08-12 06:39:08 +00:00
nobu 3916eb783c * marshal.c (dump_ensure), process.c (run_exec_dup2),
string.c (rb_str_replace), transcode.c (transcode_dispatch): fixed
  memory leaks.  based on patches from shinichiro.h <shinichiro.hamaji
  AT gmail.com> at [ruby-dev:35751].


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@18341 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-08-04 05:08:57 +00:00
nobu 351fbaf0f7 * string.c (rb_str_shared_replace): fixed memory leak. a patch from
shinichiro.h <shinichiro.hamaji AT gmail.com> at [ruby-dev:35742]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@18322 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-08-03 01:41:56 +00:00
mame 52bb9bb2d4 * string.c (sym_inspect): remove dead code.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@18268 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-07-30 13:07:16 +00:00
nobu 70b317b9da * include/ruby/intern.h, sprintf.c (rb_str_catf, rb_str_vcatf): new
functions.  [ruby-dev:35597]

* string.c (rb_str_capacity): new function to return the capacity.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@18156 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-07-22 07:48:00 +00:00
nobu 5ffd0cc80f * include/ruby/intern.h (rb_str_buf_new2): optimization for literals.
* string.c (str_buf_cat): returns VALUE.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@18148 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-07-21 19:26:18 +00:00
nobu c62db0676b * include/ruby/intern.h (rb_str_buf_cat2, rb_str_cat2): optimization
for literals.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@18146 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-07-21 17:51:49 +00:00
nobu 6e0b5f40cc * string.c (rb_str_succ): alphabets or numerics mutually enclosing
non-alphanumeric characters can carry up.  e.g., "1.999".succ should
  be "2.000".


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@17963 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-07-08 16:38:40 +00:00
nobu f10c88827e * string.c (rb_str_succ): limit carrying in an alphanumeric region if
exists.  [ruby-dev:35094]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@17945 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-07-07 15:23:01 +00:00
akr 2950c7a919 * string.c (rb_str_format_m): make tmp volatile to avoid possible GC
problem.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@17719 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-06-29 14:03:38 +00:00
akr 340cd503a7 * include/ruby/ruby.h (struct RRegexp): new field usecnt. replace
str and len by src.

* gc.c (gc_mark_children): mark src field of regexp.
  (obj_free): don't free str field.

* re.c (REG_BUSY): removed.
  (rb_reg_initialize): prohibit re-initialize regexp.
  (rb_reg_search): use usecnt to prevent freeing regexp currently
  using.  this prevents SEGV by:
    r = /\A((a.)*(a.)*)*b/
    r =~ "ab" + "\xc2\xa1".force_encoding("euc-jp")
    t = Thread.new { r =~ "ab"*8 + "\xc2\xa1".force_encoding("utf-8")}
    sleep 0.2
    r =~ "ab"*8 + "\xc2\xa1".force_encoding("euc-jp")



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@17635 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-06-28 12:25:45 +00:00