MCPcopy Create free account
hub / github.com/Kitware/CMake / ParseModule

Function ParseModule

Source/cmCxxModuleMetadata.cxx:167–224  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

165}
166
167bool ParseModule(Json::Value& mval, cmCxxModuleMetadata::ModuleData& mod,
168 cmJSONState* state)
169{
170 if (!mval.isObject()) {
171 state->AddErrorAtValue("each entry in 'modules' must be an object", &mval);
172 return false;
173 }
174
175 if (!mval.isMember("logical-name") || !mval["logical-name"].isString() ||
176 mval["logical-name"].asString().empty()) {
177 state->AddErrorAtValue(
178 "module entries require a non-empty 'logical-name' string",
179 &mval["logical-name"]);
180 return false;
181 }
182 mod.LogicalName = mval["logical-name"].asString();
183
184 if (!mval.isMember("source-path") || !mval["source-path"].isString() ||
185 mval["source-path"].asString().empty()) {
186 state->AddErrorAtValue(
187 "module entries require a non-empty 'source-path' string",
188 &mval["source-path"]);
189 return false;
190 }
191 mod.SourcePath = mval["source-path"].asString();
192
193 if (mval.isMember("is-interface")) {
194 if (!mval["is-interface"].isBool()) {
195 state->AddErrorAtValue("'is-interface' must be boolean",
196 &mval["is-interface"]);
197 return false;
198 }
199 mod.IsInterface = mval["is-interface"].asBool();
200 } else {
201 mod.IsInterface = true;
202 }
203
204 if (mval.isMember("is-std-library")) {
205 if (!mval["is-std-library"].isBool()) {
206 state->AddErrorAtValue("'is-std-library' must be boolean",
207 &mval["is-std-library"]);
208 return false;
209 }
210 mod.IsStdLibrary = mval["is-std-library"].asBool();
211 } else {
212 mod.IsStdLibrary = false;
213 }
214
215 if (mval.isMember("local-arguments")) {
216 mod.LocalArguments.emplace();
217 if (!ParseLocalArguments(mval["local-arguments"], *mod.LocalArguments,
218 state)) {
219 return false;
220 }
221 }
222
223 return true;
224}

Callers 1

ParseRootFunction · 0.85

Calls 10

ParseLocalArgumentsFunction · 0.85
isObjectMethod · 0.80
AddErrorAtValueMethod · 0.80
isMemberMethod · 0.80
isStringMethod · 0.80
asStringMethod · 0.80
isBoolMethod · 0.80
asBoolMethod · 0.80
emplaceMethod · 0.80
emptyMethod · 0.45

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…