resolve cyclic dependency with zstd
[platform/upstream/cmake.git] / Source / cmVisualStudioWCEPlatformParser.h
1 /* Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
2    file Copyright.txt or https://cmake.org/licensing for details.  */
3 #pragma once
4
5 #include "cmConfigure.h" // IWYU pragma: keep
6
7 #include <cstddef>
8 #include <map>
9 #include <string>
10 #include <vector>
11
12 #include "cmXMLParser.h"
13
14 // This class is used to parse XML with configuration
15 // of installed SDKs in system
16 class cmVisualStudioWCEPlatformParser : public cmXMLParser
17 {
18 public:
19   cmVisualStudioWCEPlatformParser(const char* name = NULL)
20     : RequiredName(name)
21     , FoundRequiredName(false)
22   {
23   }
24
25   int ParseVersion(const char* version);
26
27   bool Found() const { return this->FoundRequiredName; }
28   const char* GetArchitectureFamily() const;
29   std::string GetOSVersion() const;
30   std::string GetIncludeDirectories() const
31   {
32     return this->FixPaths(this->Include);
33   }
34   std::string GetLibraryDirectories() const
35   {
36     return this->FixPaths(this->Library);
37   }
38   std::string GetPathDirectories() const { return this->FixPaths(this->Path); }
39   const std::vector<std::string>& GetAvailablePlatforms() const
40   {
41     return this->AvailablePlatforms;
42   }
43
44 protected:
45   virtual void StartElement(const std::string& name, const char** attributes);
46   void EndElement(const std::string& name);
47   void CharacterDataHandler(const char* data, int length);
48
49 private:
50   std::string FixPaths(const std::string& paths) const;
51
52   std::string CharacterData;
53
54   std::string Include;
55   std::string Library;
56   std::string Path;
57   std::string PlatformName;
58   std::string OSMajorVersion;
59   std::string OSMinorVersion;
60   std::map<std::string, std::string> Macros;
61   std::vector<std::string> AvailablePlatforms;
62
63   const char* RequiredName;
64   bool FoundRequiredName;
65   std::string VcInstallDir;
66   std::string VsInstallDir;
67 };