Coverage Report

Created: 2025-07-11 06:13

/src/yaml-cpp/src/scanscalar.h
Line
Count
Source
1
#ifndef SCANSCALAR_H_62B23520_7C8E_11DE_8A39_0800200C9A66
2
#define SCANSCALAR_H_62B23520_7C8E_11DE_8A39_0800200C9A66
3
4
#if defined(_MSC_VER) ||                                            \
5
    (defined(__GNUC__) && (__GNUC__ == 3 && __GNUC_MINOR__ >= 4) || \
6
     (__GNUC__ >= 4))  // GCC supports "pragma once" correctly since 3.4
7
#pragma once
8
#endif
9
10
#include <string>
11
12
#include "regex_yaml.h"
13
#include "stream.h"
14
15
namespace YAML {
16
enum CHOMP { STRIP = -1, CLIP, KEEP };
17
enum ACTION { NONE, BREAK, THROW };
18
enum FOLD { DONT_FOLD, FOLD_BLOCK, FOLD_FLOW };
19
20
struct ScanScalarParams {
21
  ScanScalarParams()
22
588k
      : end(nullptr),
23
588k
        eatEnd(false),
24
588k
        indent(0),
25
588k
        detectIndent(false),
26
588k
        eatLeadingWhitespace(0),
27
588k
        escape(0),
28
588k
        fold(DONT_FOLD),
29
588k
        trimTrailingSpaces(0),
30
588k
        chomp(CLIP),
31
588k
        onDocIndicator(NONE),
32
588k
        onTabInIndentation(NONE),
33
588k
        leadingSpaces(false) {}
34
35
  // input:
36
  const RegEx* end;   // what condition ends this scalar?
37
                      // unowned.
38
  bool eatEnd;        // should we eat that condition when we see it?
39
  int indent;         // what level of indentation should be eaten and ignored?
40
  bool detectIndent;  // should we try to autodetect the indent?
41
  bool eatLeadingWhitespace;  // should we continue eating this delicious
42
                              // indentation after 'indent' spaces?
43
  char escape;  // what character do we escape on (i.e., slash or single quote)
44
                // (0 for none)
45
  FOLD fold;    // how do we fold line ends?
46
  bool trimTrailingSpaces;  // do we remove all trailing spaces (at the very
47
                            // end)
48
  CHOMP chomp;  // do we strip, clip, or keep trailing newlines (at the very
49
                // end)
50
  //   Note: strip means kill all, clip means keep at most one, keep means keep
51
  // all
52
  ACTION onDocIndicator;      // what do we do if we see a document indicator?
53
  ACTION onTabInIndentation;  // what do we do if we see a tab where we should
54
                              // be seeing indentation spaces
55
56
  // output:
57
  bool leadingSpaces;
58
};
59
60
std::string ScanScalar(Stream& INPUT, ScanScalarParams& params);
61
}
62
63
#endif  // SCANSCALAR_H_62B23520_7C8E_11DE_8A39_0800200C9A66