Coverage Report

Created: 2026-07-14 07:09

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
40.7k
  : IsVariable{ isVariable }
16
40.7k
  , Data{ data }
17
40.7k
{
18
40.7k
}
19
20
cmPkgConfigEntry::cmPkgConfigEntry(bool isVariable, cm::string_view key)
21
73.3k
  : IsVariable{ isVariable }
22
73.3k
  , Key{ key }
23
73.3k
{
24
73.3k
}
25
26
cmPkgConfigParser::cmPkgConfigParser()
27
498
{
28
498
  llpkgc_init(static_cast<llpkgc_t*>(this), &Settings_);
29
498
}
30
31
llpkgc_errno_t cmPkgConfigParser::Parse(char* buf, std::size_t len)
32
498
{
33
498
  return llpkgc_execute(static_cast<llpkgc_t*>(this), buf, len);
34
498
}
35
36
llpkgc_errno_t cmPkgConfigParser::Finish()
37
498
{
38
498
  return llpkgc_finish(static_cast<llpkgc_t*>(this));
39
498
}
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
73.3k
{
61
73.3k
  Ptr_ = at;
62
73.3k
  Len_ = len;
63
73.3k
  Settings_.on_key = OnSpanNextTr;
64
73.3k
  return 0;
65
73.3k
}
66
67
int cmPkgConfigParser::OnKeyTr(llpkgc_t* parser, char const* at,
68
                               std::size_t len)
69
73.3k
{
70
73.3k
  return static_cast<cmPkgConfigParser*>(parser)->OnKey(at, len);
71
73.3k
}
72
73
int cmPkgConfigParser::OnKeywordComplete()
74
50.3k
{
75
50.3k
  Data_.emplace_back(false, cm::string_view{ Ptr_, Len_ });
76
50.3k
  Settings_.on_key = OnKeyTr;
77
50.3k
  return 0;
78
50.3k
}
79
80
int cmPkgConfigParser::OnKeywordCompleteTr(llpkgc_t* parser)
81
50.3k
{
82
50.3k
  return static_cast<cmPkgConfigParser*>(parser)->OnKeywordComplete();
83
50.3k
}
84
85
int cmPkgConfigParser::OnVariableComplete()
86
23.0k
{
87
23.0k
  Data_.emplace_back(true, cm::string_view{ Ptr_, Len_ });
88
23.0k
  Settings_.on_key = OnKeyTr;
89
23.0k
  return 0;
90
23.0k
}
91
92
int cmPkgConfigParser::OnVariableCompleteTr(llpkgc_t* parser)
93
23.0k
{
94
23.0k
  return static_cast<cmPkgConfigParser*>(parser)->OnVariableComplete();
95
23.0k
}
96
97
int cmPkgConfigParser::OnValueLiteral(char const* at, std::size_t len)
98
39.4k
{
99
39.4k
  Ptr_ = at;
100
39.4k
  Len_ = len;
101
39.4k
  Settings_.on_value_literal = OnSpanNextTr;
102
39.4k
  return 0;
103
39.4k
}
104
105
int cmPkgConfigParser::OnValueLiteralTr(llpkgc_t* parser, char const* at,
106
                                        std::size_t len)
107
39.4k
{
108
39.4k
  return static_cast<cmPkgConfigParser*>(parser)->OnValueLiteral(at, len);
109
39.4k
}
110
111
int cmPkgConfigParser::OnValueLiteralComplete()
112
39.4k
{
113
39.4k
  Settings_.on_value_literal = OnValueLiteralTr;
114
115
39.4k
  if (Len_) {
116
37.7k
    Data_.back().Val.emplace_back(false, cm::string_view{ Ptr_, Len_ });
117
37.7k
  }
118
119
39.4k
  return 0;
120
39.4k
}
121
122
int cmPkgConfigParser::OnValueLiteralCompleteTr(llpkgc_t* parser)
123
39.4k
{
124
39.4k
  return static_cast<cmPkgConfigParser*>(parser)->OnValueLiteralComplete();
125
39.4k
}
126
127
int cmPkgConfigParser::OnValueVariable(char const* at, std::size_t len)
128
3.03k
{
129
3.03k
  Ptr_ = at;
130
3.03k
  Len_ = len;
131
3.03k
  Settings_.on_value_variable = OnSpanNextTr;
132
3.03k
  return 0;
133
3.03k
}
134
135
int cmPkgConfigParser::OnValueVariableTr(llpkgc_t* parser, char const* at,
136
                                         std::size_t len)
137
3.03k
{
138
3.03k
  return static_cast<cmPkgConfigParser*>(parser)->OnValueVariable(at, len);
139
3.03k
}
140
141
int cmPkgConfigParser::OnValueVariableComplete()
142
3.02k
{
143
3.02k
  Settings_.on_value_variable = OnValueVariableTr;
144
3.02k
  Data_.back().Val.emplace_back(true, cm::string_view{ Ptr_, Len_ });
145
3.02k
  return 0;
146
3.02k
}
147
148
int cmPkgConfigParser::OnValueVariableCompleteTr(llpkgc_t* parser)
149
3.02k
{
150
3.02k
  return static_cast<cmPkgConfigParser*>(parser)->OnValueVariableComplete();
151
3.02k
}