Coverage Report

Created: 2026-04-29 07:01

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