Coverage Report

Created: 2025-12-05 06:09

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/double-conversion/double-conversion/strtod.h
Line
Count
Source
1
// Copyright 2010 the V8 project authors. All rights reserved.
2
// Redistribution and use in source and binary forms, with or without
3
// modification, are permitted provided that the following conditions are
4
// met:
5
//
6
//     * Redistributions of source code must retain the above copyright
7
//       notice, this list of conditions and the following disclaimer.
8
//     * Redistributions in binary form must reproduce the above
9
//       copyright notice, this list of conditions and the following
10
//       disclaimer in the documentation and/or other materials provided
11
//       with the distribution.
12
//     * Neither the name of Google Inc. nor the names of its
13
//       contributors may be used to endorse or promote products derived
14
//       from this software without specific prior written permission.
15
//
16
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
17
// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
18
// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
19
// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
20
// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
21
// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
22
// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
23
// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
24
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
25
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
26
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27
28
#ifndef DOUBLE_CONVERSION_STRTOD_H_
29
#define DOUBLE_CONVERSION_STRTOD_H_
30
31
#include "utils.h"
32
33
namespace double_conversion {
34
35
// The buffer must only contain digits in the range [0-9]. It must not
36
// contain a dot or a sign. It must not start with '0', and must not be empty.
37
double Strtod(Vector<const char> buffer, int exponent);
38
39
// The buffer must only contain digits in the range [0-9]. It must not
40
// contain a dot or a sign. It must not start with '0', and must not be empty.
41
float Strtof(Vector<const char> buffer, int exponent);
42
43
// Same as Strtod, but assumes that 'trimmed' is already trimmed, as if run
44
// through TrimAndCut. That is, 'trimmed' must have no leading or trailing
45
// zeros, must not be a lone zero, and must not have 'too many' digits.
46
double StrtodTrimmed(Vector<const char> trimmed, int exponent);
47
48
// Same as Strtof, but assumes that 'trimmed' is already trimmed, as if run
49
// through TrimAndCut. That is, 'trimmed' must have no leading or trailing
50
// zeros, must not be a lone zero, and must not have 'too many' digits.
51
float StrtofTrimmed(Vector<const char> trimmed, int exponent);
52
53
1.83k
inline Vector<const char> TrimTrailingZeros(Vector<const char> buffer) {
54
5.84k
  for (int i = buffer.length() - 1; i >= 0; --i) {
55
5.78k
    if (buffer[i] != '0') {
56
1.77k
      return buffer.SubVector(0, i + 1);
57
1.77k
    }
58
5.78k
  }
59
62
  return Vector<const char>(buffer.start(), 0);
60
1.83k
}
61
62
}  // namespace double_conversion
63
64
#endif  // DOUBLE_CONVERSION_STRTOD_H_