Overview
Comment: | Add -[(hexa)decimalValueAsInteger] to OFString. |
---|---|
Downloads: | Tarball | ZIP archive | SQL archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA3-256: |
4d0bccf77c3cad81a05f682a83202eb3 |
User & Date: | js on 2009-10-06 13:02:24 |
Other Links: | manifest | tags |
Context
2009-10-06
| ||
13:42 | Fix typo in PLATFORMS. check-in: 6ee102a571 user: js tags: trunk | |
13:02 | Add -[(hexa)decimalValueAsInteger] to OFString. check-in: 4d0bccf77c user: js tags: trunk | |
12:29 | Fix bug in decoding of lowercase «. check-in: 1882b31eec user: js tags: trunk | |
Changes
Modified src/OFString.h from [9823a943c7] to [0ac3d63fc6].
︙ | ︙ | |||
272 273 274 275 276 277 278 279 280 281 282 283 284 285 | * Splits an OFString into an OFArray of OFStrings. * * \param delimiter The delimiter for splitting * \return An autoreleased OFArray with the splitted string */ - (OFArray*)splitWithDelimiter: (OFString*)delimiter; - setToCString: (const char*)str; - appendCString: (const char*)str; - appendCString: (const char*)str withLength: (size_t)len; - appendCStringWithoutUTF8Checking: (const char*)str; - appendCStringWithoutUTF8Checking: (const char*)str length: (size_t)len; | > > > > > > > > > > > > > > > > | 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 | * Splits an OFString into an OFArray of OFStrings. * * \param delimiter The delimiter for splitting * \return An autoreleased OFArray with the splitted string */ - (OFArray*)splitWithDelimiter: (OFString*)delimiter; /** * Returns the decimal value of the string as an intmax_t or throws an * OFInvalidEncoding exception if the string contains any non-number characters. * * \return An OFNumber */ - (intmax_t)decimalValueAsInteger; /** * Returns the hexadecimal value of the string as an intmax_t or throws an * OFInvalidEncoding exception if the string contains any non-number characters. * * \return An OFNumber */ - (intmax_t)hexadecimalValueAsInteger; - setToCString: (const char*)str; - appendCString: (const char*)str; - appendCString: (const char*)str withLength: (size_t)len; - appendCStringWithoutUTF8Checking: (const char*)str; - appendCStringWithoutUTF8Checking: (const char*)str length: (size_t)len; |
︙ | ︙ |
Modified src/OFString.m from [b88d3c3e4d] to [fd0de86dc5].
︙ | ︙ | |||
719 720 721 722 723 724 725 726 727 728 729 730 731 732 | } [array addObject: [OFString stringWithCString: string + last]]; [pool release]; return array; } - setToCString: (const char*)str { @throw [OFNotImplementedException newWithClass: isa selector: _cmd]; } | > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 747 748 749 750 751 752 753 754 755 756 757 758 759 760 761 762 763 764 765 766 767 768 769 770 771 772 773 774 775 776 777 778 779 780 781 782 783 | } [array addObject: [OFString stringWithCString: string + last]]; [pool release]; return array; } - (intmax_t)decimalValueAsInteger { int i = 0; intmax_t num = 0; if (string[0] == '-') i++; for (; i < length; i++) { if (string[i] >= '0' && string[i] <= '9') num = (num * 10) + (string[i] - '0'); else @throw [OFInvalidEncodingException newWithClass: isa]; } if (string[0] == '-') num *= -1; return num; } - (intmax_t)hexadecimalValueAsInteger { int i = 0; intmax_t num = 0; if (length == 0) return 0; if (length >= 2 && string[0] == '0' && string[1] == 'x') i = 2; else if (length >= 1 && (string[0] == 'x' || string[0] == '$')) i = 1; if (i == length) @throw [OFInvalidEncodingException newWithClass: isa]; for (; i < length; i++) { if (string[i] >= '0' && string[i] <= '9') num = (num << 4) | (string[i] - '0'); else if (string[i] >= 'A' && string[i] <= 'F') num = (num << 4) | (string[i] - 'A' + 10); else if (string[i] >= 'a' && string[i] <= 'f') num = (num << 4) | (string[i] - 'a' + 10); else @throw [OFInvalidEncodingException newWithClass: isa]; } return num; } - setToCString: (const char*)str { @throw [OFNotImplementedException newWithClass: isa selector: _cmd]; } |
︙ | ︙ |
Modified tests/string.m from [6af7481004] to [9be34bcdeb].
︙ | ︙ | |||
173 174 175 176 177 178 179 180 181 182 183 184 185 186 | [[a objectAtIndex: i++] isEqual: @"foo"] && [[a objectAtIndex: i++] isEqual: @"bar"] && [[a objectAtIndex: i++] isEqual: @""] && [[a objectAtIndex: i++] isEqual: @"baz"] && [[a objectAtIndex: i++] isEqual: @""] && [[a objectAtIndex: i++] isEqual: @""]) TEST(@"-[md5Hash]", [[@"asdfoobar" md5Hash] isEqual: @"184dce2ec49b5422c7cfd8728864db4c"]) TEST(@"-[sha1Hash]", [[@"asdfoobar" sha1Hash] isEqual: @"f5f81ac0a8b5cbfdc4585ec1ad32e7b3a12b9b49"]) TEST(@"-[stringByURLEncoding]", | > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 | [[a objectAtIndex: i++] isEqual: @"foo"] && [[a objectAtIndex: i++] isEqual: @"bar"] && [[a objectAtIndex: i++] isEqual: @""] && [[a objectAtIndex: i++] isEqual: @"baz"] && [[a objectAtIndex: i++] isEqual: @""] && [[a objectAtIndex: i++] isEqual: @""]) TEST(@"-[decimalValueAsInteger]", [@"1234" decimalValueAsInteger] == 1234 && [@"" decimalValueAsInteger] == 0) TEST(@"-[hexadecimalValueAsInteger]", [@"123f" hexadecimalValueAsInteger] == 0x123f && [@"0xABcd" hexadecimalValueAsInteger] == 0xABCD && [@"xbCDE" hexadecimalValueAsInteger] == 0xBCDE && [@"$CdEf" hexadecimalValueAsInteger] == 0xCDEF && [@"" hexadecimalValueAsInteger] == 0) EXPECT_EXCEPTION(@"Detect invalid characters in " @"-[decimalValueAsInteger] #1", OFInvalidEncodingException, [@"abc" decimalValueAsInteger]) EXPECT_EXCEPTION(@"Detect invalid characters in " @"-[decimalValueAsInteger] #2", OFInvalidEncodingException, [@"0a" decimalValueAsInteger]) EXPECT_EXCEPTION(@"Detect invalid chars in " @"-[hexadecimalValueAsInteger] #1", OFInvalidEncodingException, [@"0xABCDEFG" hexadecimalValueAsInteger]) EXPECT_EXCEPTION(@"Detect invalid chars in " @"-[hexadecimalValueAsInteger] #2", OFInvalidEncodingException, [@"0x" hexadecimalValueAsInteger]) EXPECT_EXCEPTION(@"Detect invalid chars in " @"-[hexadecimalValueAsInteger] #3", OFInvalidEncodingException, [@"$" hexadecimalValueAsInteger]) TEST(@"-[md5Hash]", [[@"asdfoobar" md5Hash] isEqual: @"184dce2ec49b5422c7cfd8728864db4c"]) TEST(@"-[sha1Hash]", [[@"asdfoobar" sha1Hash] isEqual: @"f5f81ac0a8b5cbfdc4585ec1ad32e7b3a12b9b49"]) TEST(@"-[stringByURLEncoding]", |
︙ | ︙ |