Lines Matching full:current
65 static inline bool ConsumeSubStringImpl(Iterator* current, in ConsumeSubStringImpl() argument
69 DOUBLE_CONVERSION_ASSERT(converter(**current) == *substring); in ConsumeSubStringImpl()
71 ++*current; in ConsumeSubStringImpl()
72 if (*current == end || converter(**current) != *substring) { in ConsumeSubStringImpl()
76 ++*current; in ConsumeSubStringImpl()
83 static bool ConsumeSubString(Iterator* current, in ConsumeSubString() argument
88 return ConsumeSubStringImpl(current, end, substring, ToLower); in ConsumeSubString()
90 return ConsumeSubStringImpl(current, end, substring, Pass); in ConsumeSubString()
139 static inline bool AdvanceToNonspace(Iterator* current, Iterator end) { in AdvanceToNonspace() argument
140 while (*current != end) { in AdvanceToNonspace()
141 if (!isWhitespace(**current)) return true; in AdvanceToNonspace()
142 ++*current; in AdvanceToNonspace()
222 Iterator current = start; in IsHexFloatString() local
225 while (isDigit(*current, 16)) { in IsHexFloatString()
227 if (Advance(¤t, separator, 16, end)) return false; in IsHexFloatString()
229 if (*current == '.') { in IsHexFloatString()
230 if (Advance(¤t, separator, 16, end)) return false; in IsHexFloatString()
231 while (isDigit(*current, 16)) { in IsHexFloatString()
233 if (Advance(¤t, separator, 16, end)) return false; in IsHexFloatString()
237 if (*current != 'p' && *current != 'P') return false; in IsHexFloatString()
238 if (Advance(¤t, separator, 16, end)) return false; in IsHexFloatString()
239 if (*current == '+' || *current == '-') { in IsHexFloatString()
240 if (Advance(¤t, separator, 16, end)) return false; in IsHexFloatString()
242 if (!isDigit(*current, 10)) return false; in IsHexFloatString()
243 if (Advance(¤t, separator, 16, end)) return true; in IsHexFloatString()
244 while (isDigit(*current, 10)) { in IsHexFloatString()
245 if (Advance(¤t, separator, 16, end)) return true; in IsHexFloatString()
247 return allow_trailing_junk || !AdvanceToNonspace(¤t, end); in IsHexFloatString()
251 // Parsing integers with radix 2, 4, 8, 16, 32. Assumes current != end.
256 static double RadixStringToIeee(Iterator* current, in RadixStringToIeee() argument
265 DOUBLE_CONVERSION_ASSERT(*current != end); in RadixStringToIeee()
267 IsHexFloatString(*current, end, separator, allow_trailing_junk)); in RadixStringToIeee()
283 while (**current == '0') { in RadixStringToIeee()
284 if (Advance(current, separator, radix, end)) { in RadixStringToIeee()
292 if (IsDecimalDigitForRadix(**current, radix)) { in RadixStringToIeee()
293 digit = static_cast<char>(**current) - '0'; in RadixStringToIeee()
295 } else if (IsCharacterDigitForRadix(**current, radix, 'a')) { in RadixStringToIeee()
296 digit = static_cast<char>(**current) - 'a' + 10; in RadixStringToIeee()
298 } else if (IsCharacterDigitForRadix(**current, radix, 'A')) { in RadixStringToIeee()
299 digit = static_cast<char>(**current) - 'A' + 10; in RadixStringToIeee()
301 } else if (parse_as_hex_float && **current == '.') { in RadixStringToIeee()
303 Advance(current, separator, radix, end); in RadixStringToIeee()
304 DOUBLE_CONVERSION_ASSERT(*current != end); in RadixStringToIeee()
306 } else if (parse_as_hex_float && (**current == 'p' || **current == 'P')) { in RadixStringToIeee()
309 if (allow_trailing_junk || !AdvanceToNonspace(current, end)) { in RadixStringToIeee()
334 if (Advance(current, separator, radix, end)) break; in RadixStringToIeee()
335 if (parse_as_hex_float && **current == '.') { in RadixStringToIeee()
338 Advance(current, separator, radix, end); in RadixStringToIeee()
339 DOUBLE_CONVERSION_ASSERT(*current != end); in RadixStringToIeee()
342 if (!isDigit(**current, radix)) break; in RadixStringToIeee()
343 zero_tail = zero_tail && **current == '0'; in RadixStringToIeee()
349 AdvanceToNonspace(current, end)) { in RadixStringToIeee()
371 if (Advance(current, separator, radix, end)) break; in RadixStringToIeee()
380 DOUBLE_CONVERSION_ASSERT(**current == 'p' || **current == 'P'); in RadixStringToIeee()
381 Advance(current, separator, radix, end); in RadixStringToIeee()
382 DOUBLE_CONVERSION_ASSERT(*current != end); in RadixStringToIeee()
384 if (**current == '+') { in RadixStringToIeee()
385 Advance(current, separator, radix, end); in RadixStringToIeee()
386 DOUBLE_CONVERSION_ASSERT(*current != end); in RadixStringToIeee()
387 } else if (**current == '-') { in RadixStringToIeee()
389 Advance(current, separator, radix, end); in RadixStringToIeee()
390 DOUBLE_CONVERSION_ASSERT(*current != end); in RadixStringToIeee()
393 while (IsDecimalDigitForRadix(**current, 10)) { in RadixStringToIeee()
397 written_exponent = 10 * written_exponent + **current - '0'; in RadixStringToIeee()
399 if (Advance(current, separator, radix, end)) break; in RadixStringToIeee()
424 Iterator current = input; in StringToIeee() local
437 // 1. Each '++current' statement is followed by check for equality to 'end'. in StringToIeee()
438 // 2. If AdvanceToNonspace returned false then current == end. in StringToIeee()
439 // 3. If 'current' becomes equal to 'end' the function returns or goes to in StringToIeee()
441 // 4. 'current' is not dereferenced after the 'parsing_done' label. in StringToIeee()
442 // 5. Code before 'parsing_done' may rely on 'current != end'. in StringToIeee()
443 if (current == end) return empty_string_value_; in StringToIeee()
446 if (!AdvanceToNonspace(¤t, end)) { in StringToIeee()
447 *processed_characters_count = static_cast<int>(current - input); in StringToIeee()
450 if (!allow_leading_spaces && (input != current)) { in StringToIeee()
465 if (*current == '+' || *current == '-') { in StringToIeee()
466 sign = (*current == '-'); in StringToIeee()
467 ++current; in StringToIeee()
468 Iterator next_non_space = current; in StringToIeee()
471 if (!allow_spaces_after_sign && (current != next_non_space)) { in StringToIeee()
474 current = next_non_space; in StringToIeee()
478 if (ConsumeFirstCharacter(*current, infinity_symbol_, allow_case_insensitivity)) { in StringToIeee()
479 if (!ConsumeSubString(¤t, end, infinity_symbol_, allow_case_insensitivity)) { in StringToIeee()
483 if (!(allow_trailing_spaces || allow_trailing_junk) && (current != end)) { in StringToIeee()
486 if (!allow_trailing_junk && AdvanceToNonspace(¤t, end)) { in StringToIeee()
490 *processed_characters_count = static_cast<int>(current - input); in StringToIeee()
496 if (ConsumeFirstCharacter(*current, nan_symbol_, allow_case_insensitivity)) { in StringToIeee()
497 if (!ConsumeSubString(¤t, end, nan_symbol_, allow_case_insensitivity)) { in StringToIeee()
501 if (!(allow_trailing_spaces || allow_trailing_junk) && (current != end)) { in StringToIeee()
504 if (!allow_trailing_junk && AdvanceToNonspace(¤t, end)) { in StringToIeee()
508 *processed_characters_count = static_cast<int>(current - input); in StringToIeee()
514 if (*current == '0') { in StringToIeee()
515 if (Advance(¤t, separator_, 10, end)) { in StringToIeee()
516 *processed_characters_count = static_cast<int>(current - input); in StringToIeee()
524 (*current == 'x' || *current == 'X')) { in StringToIeee()
525 ++current; in StringToIeee()
527 if (current == end) return junk_string_value_; // "0x" in StringToIeee()
530 IsHexFloatString(current, end, separator_, allow_trailing_junk); in StringToIeee()
532 if (!parse_as_hex_float && !isDigit(*current, 16)) { in StringToIeee()
537 double result = RadixStringToIeee<4>(¤t, in StringToIeee()
547 if (allow_trailing_spaces) AdvanceToNonspace(¤t, end); in StringToIeee()
548 *processed_characters_count = static_cast<int>(current - input); in StringToIeee()
554 while (*current == '0') { in StringToIeee()
555 if (Advance(¤t, separator_, 10, end)) { in StringToIeee()
556 *processed_characters_count = static_cast<int>(current - input); in StringToIeee()
571 while (*current >= '0' && *current <= '9') { in StringToIeee()
574 buffer[buffer_pos++] = static_cast<char>(*current); in StringToIeee()
579 nonzero_digit_dropped = nonzero_digit_dropped || *current != '0'; in StringToIeee()
581 octal = octal && *current < '8'; in StringToIeee()
582 if (Advance(¤t, separator_, 10, end)) goto parsing_done; in StringToIeee()
589 if (*current == '.') { in StringToIeee()
593 if (Advance(¤t, separator_, 10, end)) { in StringToIeee()
605 while (*current == '0') { in StringToIeee()
606 if (Advance(¤t, separator_, 10, end)) { in StringToIeee()
607 *processed_characters_count = static_cast<int>(current - input); in StringToIeee()
616 while (*current >= '0' && *current <= '9') { in StringToIeee()
619 buffer[buffer_pos++] = static_cast<char>(*current); in StringToIeee()
624 nonzero_digit_dropped = nonzero_digit_dropped || *current != '0'; in StringToIeee()
626 if (Advance(¤t, separator_, 10, end)) goto parsing_done; in StringToIeee()
639 if (*current == 'e' || *current == 'E') { in StringToIeee()
642 Iterator junk_begin = current; in StringToIeee()
643 ++current; in StringToIeee()
644 if (current == end) { in StringToIeee()
646 current = junk_begin; in StringToIeee()
653 if (*current == '+' || *current == '-') { in StringToIeee()
654 exponen_sign = static_cast<char>(*current); in StringToIeee()
655 ++current; in StringToIeee()
656 if (current == end) { in StringToIeee()
658 current = junk_begin; in StringToIeee()
666 if (current == end || *current < '0' || *current > '9') { in StringToIeee()
668 current = junk_begin; in StringToIeee()
680 int digit = *current - '0'; in StringToIeee()
687 ++current; in StringToIeee()
688 } while (current != end && *current >= '0' && *current <= '9'); in StringToIeee()
693 if (!(allow_trailing_spaces || allow_trailing_junk) && (current != end)) { in StringToIeee()
696 if (!allow_trailing_junk && AdvanceToNonspace(¤t, end)) { in StringToIeee()
700 AdvanceToNonspace(¤t, end); in StringToIeee()
720 *processed_characters_count = static_cast<int>(current - input); in StringToIeee()
744 *processed_characters_count = static_cast<int>(current - input); in StringToIeee()