/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 | } |