/*  Range.new( start, end, exclusive=false ) -> aRange 
 *  ----
 *  Constructs a range using the given start and end. If the third 
 *  parameter is omitted or is false, the range will include the end 
 *  object; otherwise, it will be excluded. 

static VALUE
range_initialize(argc, argv, obj)
    int argc;
    VALUE *argv;
    VALUE obj;
    VALUE beg, end, flag;
    rb_scan_args(argc, argv, "21", &beg, &end, &flag);
    /* Ranges are immutable, so that they should be initialized only once. */
    if (rb_ivar_defined(obj, id_beg)) {
	rb_raise(rb_eNameError, "`initialize' called twice");
    range_init(obj, beg, end, RTEST(flag));
    return Qnil;