| 165 | } |
| 166 | |
| 167 | bool 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 | } |
no test coverage detected
searching dependent graphs…