summaryrefslogtreecommitdiffstats
path: root/Source/cmCMakePresetsFile.cxx
diff options
context:
space:
mode:
authorKyle Edwards <kyle.edwards@kitware.com>2020-10-22 15:04:13 (GMT)
committerKitware Robot <kwrobot@kitware.com>2020-10-22 15:04:18 (GMT)
commit6af1185bb4a4cdc826763ea38db0e59e5ed3ffd7 (patch)
tree300fb2ca724c39e0f9498736f8b48d0a5bf62fa0 /Source/cmCMakePresetsFile.cxx
parentec3b3d2c2f16397b9a40f79a9783f3d207088b93 (diff)
parent920d18004731c97a828a937e2074b6882ffeb20d (diff)
downloadCMake-6af1185bb4a4cdc826763ea38db0e59e5ed3ffd7.zip
CMake-6af1185bb4a4cdc826763ea38db0e59e5ed3ffd7.tar.gz
CMake-6af1185bb4a4cdc826763ea38db0e59e5ed3ffd7.tar.bz2
Merge topic 'cmake-presets-boolean-cache' into release-3.19
920d180047 CMakePresets.json: Allow boolean for cache variable value Acked-by: Kitware Robot <kwrobot@kitware.com> Merge-request: !5398
Diffstat (limited to 'Source/cmCMakePresetsFile.cxx')
-rw-r--r--Source/cmCMakePresetsFile.cxx24
1 files changed, 23 insertions, 1 deletions
diff --git a/Source/cmCMakePresetsFile.cxx b/Source/cmCMakePresetsFile.cxx
index 90a0faa..456094f 100644
--- a/Source/cmCMakePresetsFile.cxx
+++ b/Source/cmCMakePresetsFile.cxx
@@ -77,15 +77,37 @@ auto const RootVersionHelper =
auto const VariableStringHelper = cmJSONStringHelper<ReadFileResult>(
ReadFileResult::READ_OK, ReadFileResult::INVALID_VARIABLE);
+ReadFileResult VariableValueHelper(std::string& out, const Json::Value* value)
+{
+ if (!value) {
+ out.clear();
+ return ReadFileResult::READ_OK;
+ }
+
+ if (value->isBool()) {
+ out = value->asBool() ? "TRUE" : "FALSE";
+ return ReadFileResult::READ_OK;
+ }
+
+ return VariableStringHelper(out, value);
+}
+
auto const VariableObjectHelper =
cmJSONObjectHelper<CacheVariable, ReadFileResult>(
ReadFileResult::READ_OK, ReadFileResult::INVALID_VARIABLE, false)
.Bind("type"_s, &CacheVariable::Type, VariableStringHelper, false)
- .Bind("value"_s, &CacheVariable::Value, VariableStringHelper);
+ .Bind("value"_s, &CacheVariable::Value, VariableValueHelper);
ReadFileResult VariableHelper(cm::optional<CacheVariable>& out,
const Json::Value* value)
{
+ if (value->isBool()) {
+ out = CacheVariable{
+ /*Type=*/"BOOL",
+ /*Value=*/value->asBool() ? "TRUE" : "FALSE",
+ };
+ return ReadFileResult::READ_OK;
+ }
if (value->isString()) {
out = CacheVariable{
/*Type=*/"",