/* Distributed under the OSI-approved BSD 3-Clause License. See accompanying file Copyright.txt or https://cmake.org/licensing for details. */ #pragma once #include "cmConfigure.h" // IWYU pragma: keep #include #include #include #include #include "cmXMLParser.h" // This class is used to parse XML with configuration // of installed SDKs in system class cmVisualStudioWCEPlatformParser : public cmXMLParser { public: cmVisualStudioWCEPlatformParser(const char* name = nullptr) : RequiredName(name) { } int ParseVersion(const char* version); bool Found() const { return this->FoundRequiredName; } const char* GetArchitectureFamily() const; std::string GetOSVersion() const; std::string GetIncludeDirectories() const { return this->FixPaths(this->Include); } std::string GetLibraryDirectories() const { return this->FixPaths(this->Library); } std::string GetPathDirectories() const { return this->FixPaths(this->Path); } const std::vector& GetAvailablePlatforms() const { return this->AvailablePlatforms; } protected: void StartElement(const std::string& name, const char** attributes) override; void EndElement(const std::string& name) override; void CharacterDataHandler(const char* data, int length) override; private: std::string FixPaths(const std::string& paths) const; std::string CharacterData; std::string Include; std::string Library; std::string Path; std::string PlatformName; std::string OSMajorVersion; std::string OSMinorVersion; std::map Macros; std::vector AvailablePlatforms; const char* RequiredName; bool FoundRequiredName = false; std::string VcInstallDir; std::string VsInstallDir; };