Ticket #1821: new_reverse.patch

File new_reverse.patch, 1.8 KB (added by dukeleto, 4 years ago)

This patch is a slightly tweked revert of the removal of String.reverse, but it fails it's test

  • src/pmc/string.pmc

     
    714714 
    715715/* 
    716716 
     717=item C<void reverse(STRING *src)> 
     718 
     719Reverse the ascii STRING C<src> in place. 
     720 
     721=cut 
     722 
     723*/ 
     724 
     725    METHOD reverse(STRING *src) { 
     726        INTVAL         i; 
     727        unsigned char *p; 
     728        INTVAL         len = Parrot_str_byte_length(interp, src); 
     729 
     730        if (!len) 
     731            RETURN(void); 
     732 
     733        if (src->encoding != Parrot_ascii_encoding_ptr) 
     734            Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_INVALID_ENCODING, 
     735                "Can't reverse non-ascii"); 
     736 
     737        p = (unsigned char *)Buffer_bufstart(src); 
     738 
     739        for (i = 0, --len; i < len; ++i, --len) { 
     740            const unsigned char ch = p[len]; 
     741 
     742            p[len] = p[i]; 
     743            p[i]   = ch; 
     744        } 
     745    } 
     746 
     747/* 
     748 
    717749=item C<INTEGER is_integer(STRING *src)> 
    718750 
    719751Checks if the ascii STRING C<str> is just an integer. 
  • t/pmc/string.t

     
    1919.sub main :main 
    2020    .include 'test_more.pir' 
    2121 
    22     plan(121) 
     22    plan(122) 
    2323 
    2424    set_or_get_strings() 
    2525    setting_integers() 
     
    4545    test_string_replace() 
    4646    set_i0__p0__string_to_int() 
    4747    test_string_trans() 
     48    reverse_p0__reverse_string() 
    4849    is_integer__check_integer() 
    4950    instantiate_str() 
    5051    get_string_returns_cow_string() 
     
    566567    .return(tr_array) 
    567568.end 
    568569 
     570.sub reverse_p0__reverse_string 
     571    $S0 = 'torrap' 
     572    $P0 = new ['String'] 
     573    $P0.'reverse'($S0) 
     574    is( $S0, "parrot", 'reverse string' ) 
     575.end 
     576 
    569577.sub is_integer__check_integer 
    570578  $P0 = new ['String'] 
    571579