summaryrefslogtreecommitdiffstats
path: root/Source/cmFileAPI.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'Source/cmFileAPI.cxx')
-rw-r--r--Source/cmFileAPI.cxx63
1 files changed, 49 insertions, 14 deletions
diff --git a/Source/cmFileAPI.cxx b/Source/cmFileAPI.cxx
index 34b6b33..ed45398 100644
--- a/Source/cmFileAPI.cxx
+++ b/Source/cmFileAPI.cxx
@@ -413,6 +413,14 @@ std::string cmFileAPI::ObjectName(Object const& o)
return name;
}
+Json::Value cmFileAPI::BuildVersion(unsigned int major, unsigned int minor)
+{
+ Json::Value version;
+ version["major"] = major;
+ version["minor"] = minor;
+ return version;
+}
+
Json::Value cmFileAPI::BuildObject(Object const& object)
{
Json::Value value;
@@ -680,10 +688,9 @@ Json::Value cmFileAPI::BuildCodeModel(Object const& object)
Json::Value codemodel = cmFileAPICodemodelDump(*this, object.Version);
codemodel["kind"] = this->ObjectKindName(object.Kind);
- Json::Value& version = codemodel["version"] = Json::objectValue;
+ Json::Value& version = codemodel["version"];
if (object.Version == 2) {
- version["major"] = 2;
- version["minor"] = CodeModelV2Minor;
+ version = BuildVersion(2, CodeModelV2Minor);
} else {
return codemodel; // should be unreachable
}
@@ -716,10 +723,9 @@ Json::Value cmFileAPI::BuildCache(Object const& object)
Json::Value cache = cmFileAPICacheDump(*this, object.Version);
cache["kind"] = this->ObjectKindName(object.Kind);
- Json::Value& version = cache["version"] = Json::objectValue;
+ Json::Value& version = cache["version"];
if (object.Version == 2) {
- version["major"] = 2;
- version["minor"] = CacheV2Minor;
+ version = BuildVersion(2, CacheV2Minor);
} else {
return cache; // should be unreachable
}
@@ -752,10 +758,9 @@ Json::Value cmFileAPI::BuildCMakeFiles(Object const& object)
Json::Value cmakeFiles = cmFileAPICMakeFilesDump(*this, object.Version);
cmakeFiles["kind"] = this->ObjectKindName(object.Kind);
- Json::Value& version = cmakeFiles["version"] = Json::objectValue;
+ Json::Value& version = cmakeFiles["version"];
if (object.Version == 1) {
- version["major"] = 1;
- version["minor"] = CMakeFilesV1Minor;
+ version = BuildVersion(1, CMakeFilesV1Minor);
} else {
return cmakeFiles; // should be unreachable
}
@@ -788,13 +793,43 @@ Json::Value cmFileAPI::BuildInternalTest(Object const& object)
{
Json::Value test = Json::objectValue;
test["kind"] = this->ObjectKindName(object.Kind);
- Json::Value& version = test["version"] = Json::objectValue;
+ Json::Value& version = test["version"];
if (object.Version == 2) {
- version["major"] = 2;
- version["minor"] = InternalTestV2Minor;
+ version = BuildVersion(2, InternalTestV2Minor);
} else {
- version["major"] = 1;
- version["minor"] = InternalTestV1Minor;
+ version = BuildVersion(1, InternalTestV1Minor);
}
return test;
}
+
+Json::Value cmFileAPI::ReportCapabilities()
+{
+ Json::Value capabilities = Json::objectValue;
+ Json::Value& requests = capabilities["requests"] = Json::arrayValue;
+
+ {
+ Json::Value request = Json::objectValue;
+ request["kind"] = ObjectKindName(ObjectKind::CodeModel);
+ Json::Value& versions = request["version"] = Json::arrayValue;
+ versions.append(BuildVersion(2, CodeModelV2Minor));
+ requests.append(std::move(request));
+ }
+
+ {
+ Json::Value request = Json::objectValue;
+ request["kind"] = ObjectKindName(ObjectKind::Cache);
+ Json::Value& versions = request["version"] = Json::arrayValue;
+ versions.append(BuildVersion(2, CacheV2Minor));
+ requests.append(std::move(request));
+ }
+
+ {
+ Json::Value request = Json::objectValue;
+ request["kind"] = ObjectKindName(ObjectKind::CMakeFiles);
+ Json::Value& versions = request["version"] = Json::arrayValue;
+ versions.append(BuildVersion(1, CMakeFilesV1Minor));
+ requests.append(std::move(request));
+ }
+
+ return capabilities;
+}