* range.c (range_eql): fixed rdoc.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8@23356 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
nobu 2009-05-07 04:58:54 +00:00
parent 24489c89dd
commit d3e42dbbe3
2 changed files with 40 additions and 36 deletions

View file

@ -1,3 +1,7 @@
Thu May 7 13:58:52 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
* range.c (range_eql): fixed rdoc.
Thu May 7 01:59:35 2009 Tanaka Akira <akr@fsij.org> Thu May 7 01:59:35 2009 Tanaka Akira <akr@fsij.org>
* util.c: suppress strict-aliasing warning with gcc-4.4.0 -O2 to fix * util.c: suppress strict-aliasing warning with gcc-4.4.0 -O2 to fix

72
range.c
View file

@ -41,7 +41,7 @@ range_init(range, beg, end, exclude_end)
args[0] = beg; args[0] = beg;
args[1] = end; args[1] = end;
if (!FIXNUM_P(beg) || !FIXNUM_P(end)) { if (!FIXNUM_P(beg) || !FIXNUM_P(end)) {
VALUE v; VALUE v;
@ -68,7 +68,7 @@ rb_range_new(beg, end, exclude_end)
/* /*
* call-seq: * call-seq:
* Range.new(start, end, exclusive=false) => range * Range.new(start, end, exclusive=false) => range
* *
* Constructs a range using the given <i>start</i> and <i>end</i>. If the third * Constructs a range using the given <i>start</i> and <i>end</i>. If the third
* parameter is omitted or is <code>false</code>, the <i>range</i> will include * parameter is omitted or is <code>false</code>, the <i>range</i> will include
* the end object; otherwise, it will be excluded. * the end object; otherwise, it will be excluded.
@ -81,7 +81,7 @@ range_initialize(argc, argv, range)
VALUE range; VALUE range;
{ {
VALUE beg, end, flags; VALUE beg, end, flags;
rb_scan_args(argc, argv, "21", &beg, &end, &flags); rb_scan_args(argc, argv, "21", &beg, &end, &flags);
/* Ranges are immutable, so that they should be initialized only once. */ /* Ranges are immutable, so that they should be initialized only once. */
if (rb_ivar_defined(range, id_beg)) { if (rb_ivar_defined(range, id_beg)) {
@ -95,7 +95,7 @@ range_initialize(argc, argv, range)
/* /*
* call-seq: * call-seq:
* rng.exclude_end? => true or false * rng.exclude_end? => true or false
* *
* Returns <code>true</code> if <i>rng</i> excludes its end value. * Returns <code>true</code> if <i>rng</i> excludes its end value.
*/ */
@ -110,15 +110,15 @@ range_exclude_end_p(range)
/* /*
* call-seq: * call-seq:
* rng == obj => true or false * rng == obj => true or false
* *
* Returns <code>true</code> only if <i>obj</i> is a Range, has equivalent * Returns <code>true</code> only if <i>obj</i> is a Range, has equivalent
* beginning and end items (by comparing them with <code>==</code>), and has * beginning and end items (by comparing them with <code>==</code>), and has
* the same #exclude_end? setting as <i>rng</t>. * the same #exclude_end? setting as <i>rng</t>.
* *
* (0..2) == (0..2) #=> true * (0..2) == (0..2) #=> true
* (0..2) == Range.new(0,2) #=> true * (0..2) == Range.new(0,2) #=> true
* (0..2) == (0...2) #=> false * (0..2) == (0...2) #=> false
* *
*/ */
static VALUE static VALUE
@ -168,15 +168,15 @@ r_le(a, b)
/* /*
* call-seq: * call-seq:
* rng.eql?(obj) => true or false * rng.eql?(obj) => true or false
* *
* Returns <code>true</code> only if <i>obj</i> is a Range, has equivalent * Returns <code>true</code> only if <i>obj</i> is a Range, has equivalent
* beginning and end items (by comparing them with #eql?), and has the same * beginning and end items (by comparing them with #eql?), and has the same
* #exclude_end? setting as <i>rng</i>. * #exclude_end? setting as <i>rng</i>.
* *
* (0..2) == (0..2) #=> true * (0..2).eql?(0..2) #=> true
* (0..2) == Range.new(0,2) #=> true * (0..2).eql?(Range.new(0,2)) #=> true
* (0..2) == (0...2) #=> false * (0..2).eql?(0...2) #=> false
* *
*/ */
static VALUE static VALUE
@ -278,19 +278,19 @@ extern int ruby_float_step _((VALUE from, VALUE to, VALUE step, int excl));
/* /*
* call-seq: * call-seq:
* rng.step(n=1) {| obj | block } => rng * rng.step(n=1) {| obj | block } => rng
* *
* Iterates over <i>rng</i>, passing each <i>n</i>th element to the block. If * Iterates over <i>rng</i>, passing each <i>n</i>th element to the block. If
* the range contains numbers, <i>n</i> is added for each iteration. Otherwise * the range contains numbers, <i>n</i> is added for each iteration. Otherwise
* <code>step</code> invokes <code>succ</code> to iterate through range * <code>step</code> invokes <code>succ</code> to iterate through range
* elements. The following code uses class <code>Xs</code>, which is defined * elements. The following code uses class <code>Xs</code>, which is defined
* in the class-level documentation. * in the class-level documentation.
* *
* range = Xs.new(1)..Xs.new(10) * range = Xs.new(1)..Xs.new(10)
* range.step(2) {|x| puts x} * range.step(2) {|x| puts x}
* range.step(3) {|x| puts x} * range.step(3) {|x| puts x}
* *
* <em>produces:</em> * <em>produces:</em>
* *
* 1 x * 1 x
* 3 xxx * 3 xxx
* 5 xxxxx * 5 xxxxx
@ -337,7 +337,7 @@ range_step(argc, argv, range)
if (!EXCL(range)) if (!EXCL(range))
end += 1; end += 1;
i = FIX2LONG(b); i = FIX2LONG(b);
while (i < end) { while (i < end) {
rb_yield(LONG2NUM(i)); rb_yield(LONG2NUM(i));
if (i + unit < i) break; if (i + unit < i) break;
@ -407,18 +407,18 @@ each_i(v, arg)
/* /*
* call-seq: * call-seq:
* rng.each {| i | block } => rng * rng.each {| i | block } => rng
* *
* Iterates over the elements <i>rng</i>, passing each in turn to the * Iterates over the elements <i>rng</i>, passing each in turn to the
* block. You can only iterate if the start object of the range * block. You can only iterate if the start object of the range
* supports the +succ+ method (which means that you can't iterate over * supports the +succ+ method (which means that you can't iterate over
* ranges of +Float+ objects). * ranges of +Float+ objects).
* *
* (10..15).each do |n| * (10..15).each do |n|
* print n, ' ' * print n, ' '
* end * end
* *
* <em>produces:</em> * <em>produces:</em>
* *
* 10 11 12 13 14 15 * 10 11 12 13 14 15
*/ */
@ -464,7 +464,7 @@ range_each(range)
* call-seq: * call-seq:
* rng.first => obj * rng.first => obj
* rng.begin => obj * rng.begin => obj
* *
* Returns the first object in <i>rng</i>. * Returns the first object in <i>rng</i>.
*/ */
@ -480,9 +480,9 @@ range_first(range)
* call-seq: * call-seq:
* rng.end => obj * rng.end => obj
* rng.last => obj * rng.last => obj
* *
* Returns the object that defines the end of <i>rng</i>. * Returns the object that defines the end of <i>rng</i>.
* *
* (1..10).end #=> 10 * (1..10).end #=> 10
* (1...10).end #=> 10 * (1...10).end #=> 10
*/ */
@ -561,7 +561,7 @@ range_to_s(range)
* call-seq: * call-seq:
* rng.inspect => string * rng.inspect => string
* *
* Convert this range object to a printable form (using * Convert this range object to a printable form (using
* <code>inspect</code> to convert the start and end * <code>inspect</code> to convert the start and end
* objects). * objects).
*/ */
@ -588,20 +588,20 @@ range_inspect(range)
* rng === obj => true or false * rng === obj => true or false
* rng.member?(val) => true or false * rng.member?(val) => true or false
* rng.include?(val) => true or false * rng.include?(val) => true or false
* *
* Returns <code>true</code> if <i>obj</i> is an element of * Returns <code>true</code> if <i>obj</i> is an element of
* <i>rng</i>, <code>false</code> otherwise. Conveniently, * <i>rng</i>, <code>false</code> otherwise. Conveniently,
* <code>===</code> is the comparison operator used by * <code>===</code> is the comparison operator used by
* <code>case</code> statements. * <code>case</code> statements.
* *
* case 79 * case 79
* when 1..50 then print "low\n" * when 1..50 then print "low\n"
* when 51..75 then print "medium\n" * when 51..75 then print "medium\n"
* when 76..100 then print "high\n" * when 76..100 then print "high\n"
* end * end
* *
* <em>produces:</em> * <em>produces:</em>
* *
* high * high
*/ */
@ -633,17 +633,17 @@ range_include(range, val)
* run from the start to the end inclusively. Those created using * run from the start to the end inclusively. Those created using
* <code>...</code> exclude the end value. When used as an iterator, * <code>...</code> exclude the end value. When used as an iterator,
* ranges return each value in the sequence. * ranges return each value in the sequence.
* *
* (-1..-5).to_a #=> [] * (-1..-5).to_a #=> []
* (-5..-1).to_a #=> [-5, -4, -3, -2, -1] * (-5..-1).to_a #=> [-5, -4, -3, -2, -1]
* ('a'..'e').to_a #=> ["a", "b", "c", "d", "e"] * ('a'..'e').to_a #=> ["a", "b", "c", "d", "e"]
* ('a'...'e').to_a #=> ["a", "b", "c", "d"] * ('a'...'e').to_a #=> ["a", "b", "c", "d"]
* *
* Ranges can be constructed using objects of any type, as long as the * Ranges can be constructed using objects of any type, as long as the
* objects can be compared using their <code><=></code> operator and * objects can be compared using their <code><=></code> operator and
* they support the <code>succ</code> method to return the next object * they support the <code>succ</code> method to return the next object
* in sequence. * in sequence.
* *
* class Xs # represent a string of 'x's * class Xs # represent a string of 'x's
* include Comparable * include Comparable
* attr :length * attr :length
@ -663,18 +663,18 @@ range_include(range, val)
* 'x' * @length * 'x' * @length
* end * end
* end * end
* *
* r = Xs.new(3)..Xs.new(6) #=> xxx..xxxxxx * r = Xs.new(3)..Xs.new(6) #=> xxx..xxxxxx
* r.to_a #=> [xxx, xxxx, xxxxx, xxxxxx] * r.to_a #=> [xxx, xxxx, xxxxx, xxxxxx]
* r.member?(Xs.new(5)) #=> true * r.member?(Xs.new(5)) #=> true
* *
* In the previous code example, class <code>Xs</code> includes the * In the previous code example, class <code>Xs</code> includes the
* <code>Comparable</code> module. This is because * <code>Comparable</code> module. This is because
* <code>Enumerable#member?</code> checks for equality using * <code>Enumerable#member?</code> checks for equality using
* <code>==</code>. Including <code>Comparable</code> ensures that the * <code>==</code>. Including <code>Comparable</code> ensures that the
* <code>==</code> method is defined in terms of the <code><=></code> * <code>==</code> method is defined in terms of the <code><=></code>
* method implemented in <code>Xs</code>. * method implemented in <code>Xs</code>.
* *
*/ */
void void