Coverage Report

Created: 2026-03-12 06:35

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/CMake/Source/cmPkgConfigParser.cxx
Line
Count
Source
1
/* Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
2
   file LICENSE.rst or https://cmake.org/licensing for details.  */
3
4
#include "cmPkgConfigParser.h"
5
6
#include <cstddef>
7
#include <vector>
8
9
#include <cm/string_view>
10
11
#include <cmllpkgc/llpkgc.h>
12
13
cmPkgConfigValueElement::cmPkgConfigValueElement(bool isVariable,
14
                                                 cm::string_view data)
15
41.5k
  : IsVariable{ isVariable }
16
41.5k
  , Data{ data }
17
41.5k
{
18
41.5k
}
19
20
cmPkgConfigEntry::cmPkgConfigEntry(bool isVariable, cm::string_view key)
21
59.5k
  : IsVariable{ isVariable }
22
59.5k
  , Key{ key }
23
59.5k
{
24
59.5k
}
25
26
cmPkgConfigParser::cmPkgConfigParser()
27
495
{
28
495
  llpkgc_init(static_cast<llpkgc_t*>(this), &Settings_);
29
495
}
30
31
llpkgc_errno_t cmPkgConfigParser::Parse(char* buf, std::size_t len)
32
495
{
33
495
  return llpkgc_execute(static_cast<llpkgc_t*>(this), buf, len);
34
495
}
35
36
llpkgc_errno_t cmPkgConfigParser::Finish()
37
495
{
38
495
  return llpkgc_finish(static_cast<llpkgc_t*>(this));
39
495
}
40
41
llpkgc_errno_t cmPkgConfigParser::Finish(char* buf, std::size_t len)
42
0
{
43
0
  Parse(buf, len);
44
0
  return llpkgc_finish(static_cast<llpkgc_t*>(this));
45
0
}
46
47
int cmPkgConfigParser::OnSpanNext(char const*, std::size_t len)
48
0
{
49
0
  Len_ += len;
50
0
  return 0;
51
0
}
52
53
int cmPkgConfigParser::OnSpanNextTr(llpkgc_t* parser, char const* at,
54
                                    std::size_t len)
55
0
{
56
0
  return static_cast<cmPkgConfigParser*>(parser)->OnSpanNext(at, len);
57
0
}
58
59
int cmPkgConfigParser::OnKey(char const* at, std::size_t len)
60
59.6k
{
61
59.6k
  Ptr_ = at;
62
59.6k
  Len_ = len;
63
59.6k
  Settings_.on_key = OnSpanNextTr;
64
59.6k
  return 0;
65
59.6k
}
66
67
int cmPkgConfigParser::OnKeyTr(llpkgc_t* parser, char const* at,
68
                               std::size_t len)
69
59.6k
{
70
59.6k
  return static_cast<cmPkgConfigParser*>(parser)->OnKey(at, len);
71
59.6k
}
72
73
int cmPkgConfigParser::OnKeywordComplete()
74
38.6k
{
75
38.6k
  Data_.emplace_back(false, cm::string_view{ Ptr_, Len_ });
76
38.6k
  Settings_.on_key = OnKeyTr;
77
38.6k
  return 0;
78
38.6k
}
79
80
int cmPkgConfigParser::OnKeywordCompleteTr(llpkgc_t* parser)
81
38.6k
{
82
38.6k
  return static_cast<cmPkgConfigParser*>(parser)->OnKeywordComplete();
83
38.6k
}
84
85
int cmPkgConfigParser::OnVariableComplete()
86
20.8k
{
87
20.8k
  Data_.emplace_back(true, cm::string_view{ Ptr_, Len_ });
88
20.8k
  Settings_.on_key = OnKeyTr;
89
20.8k
  return 0;
90
20.8k
}
91
92
int cmPkgConfigParser::OnVariableCompleteTr(llpkgc_t* parser)
93
20.8k
{
94
20.8k
  return static_cast<cmPkgConfigParser*>(parser)->OnVariableComplete();
95
20.8k
}
96
97
int cmPkgConfigParser::OnValueLiteral(char const* at, std::size_t len)
98
40.1k
{
99
40.1k
  Ptr_ = at;
100
40.1k
  Len_ = len;
101
40.1k
  Settings_.on_value_literal = OnSpanNextTr;
102
40.1k
  return 0;
103
40.1k
}
104
105
int cmPkgConfigParser::OnValueLiteralTr(llpkgc_t* parser, char const* at,
106
                                        std::size_t len)
107
40.1k
{
108
40.1k
  return static_cast<cmPkgConfigParser*>(parser)->OnValueLiteral(at, len);
109
40.1k
}
110
111
int cmPkgConfigParser::OnValueLiteralComplete()
112
40.1k
{
113
40.1k
  Settings_.on_value_literal = OnValueLiteralTr;
114
115
40.1k
  if (Len_) {
116
38.5k
    Data_.back().Val.emplace_back(false, cm::string_view{ Ptr_, Len_ });
117
38.5k
  }
118
119
40.1k
  return 0;
120
40.1k
}
121
122
int cmPkgConfigParser::OnValueLiteralCompleteTr(llpkgc_t* parser)
123
40.1k
{
124
40.1k
  return static_cast<cmPkgConfigParser*>(parser)->OnValueLiteralComplete();
125
40.1k
}
126
127
int cmPkgConfigParser::OnValueVariable(char const* at, std::size_t len)
128
3.05k
{
129
3.05k
  Ptr_ = at;
130
3.05k
  Len_ = len;
131
3.05k
  Settings_.on_value_variable = OnSpanNextTr;
132
3.05k
  return 0;
133
3.05k
}
134
135
int cmPkgConfigParser::OnValueVariableTr(llpkgc_t* parser, char const* at,
136
                                         std::size_t len)
137
3.05k
{
138
3.05k
  return static_cast<cmPkgConfigParser*>(parser)->OnValueVariable(at, len);
139
3.05k
}
140
141
int cmPkgConfigParser::OnValueVariableComplete()
142
3.04k
{
143
3.04k
  Settings_.on_value_variable = OnValueVariableTr;
144
3.04k
  Data_.back().Val.emplace_back(true, cm::string_view{ Ptr_, Len_ });
145
3.04k
  return 0;
146
3.04k
}
147
148
int cmPkgConfigParser::OnValueVariableCompleteTr(llpkgc_t* parser)
149
3.04k
{
150
3.04k
  return static_cast<cmPkgConfigParser*>(parser)->OnValueVariableComplete();
151
3.04k
}