cmVisualStudioWCEPlatformParser.h 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  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. #include "cmConfigure.h" // IWYU pragma: keep
  5. #include <cstddef>
  6. #include <map>
  7. #include <string>
  8. #include <vector>
  9. #include "cmXMLParser.h"
  10. // This class is used to parse XML with configuration
  11. // of installed SDKs in system
  12. class cmVisualStudioWCEPlatformParser : public cmXMLParser
  13. {
  14. public:
  15. cmVisualStudioWCEPlatformParser(const char* name = nullptr)
  16. : RequiredName(name)
  17. {
  18. }
  19. int ParseVersion(const char* version);
  20. bool Found() const { return this->FoundRequiredName; }
  21. const char* GetArchitectureFamily() const;
  22. std::string GetOSVersion() const;
  23. std::string GetIncludeDirectories() const
  24. {
  25. return this->FixPaths(this->Include);
  26. }
  27. std::string GetLibraryDirectories() const
  28. {
  29. return this->FixPaths(this->Library);
  30. }
  31. std::string GetPathDirectories() const { return this->FixPaths(this->Path); }
  32. const std::vector<std::string>& GetAvailablePlatforms() const
  33. {
  34. return this->AvailablePlatforms;
  35. }
  36. protected:
  37. void StartElement(const std::string& name, const char** attributes) override;
  38. void EndElement(const std::string& name) override;
  39. void CharacterDataHandler(const char* data, int length) override;
  40. private:
  41. std::string FixPaths(const std::string& paths) const;
  42. std::string CharacterData;
  43. std::string Include;
  44. std::string Library;
  45. std::string Path;
  46. std::string PlatformName;
  47. std::string OSMajorVersion;
  48. std::string OSMinorVersion;
  49. std::map<std::string, std::string> Macros;
  50. std::vector<std::string> AvailablePlatforms;
  51. const char* RequiredName;
  52. bool FoundRequiredName = false;
  53. std::string VcInstallDir;
  54. std::string VsInstallDir;
  55. };