cmVisualStudioWCEPlatformParser.h 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  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 = NULL)
  16. : RequiredName(name)
  17. , FoundRequiredName(false)
  18. {
  19. }
  20. int ParseVersion(const char* version);
  21. bool Found() const { return this->FoundRequiredName; }
  22. const char* GetArchitectureFamily() const;
  23. std::string GetOSVersion() const;
  24. std::string GetIncludeDirectories() const
  25. {
  26. return this->FixPaths(this->Include);
  27. }
  28. std::string GetLibraryDirectories() const
  29. {
  30. return this->FixPaths(this->Library);
  31. }
  32. std::string GetPathDirectories() const { return this->FixPaths(this->Path); }
  33. const std::vector<std::string>& GetAvailablePlatforms() const
  34. {
  35. return this->AvailablePlatforms;
  36. }
  37. protected:
  38. virtual void StartElement(const std::string& name, const char** attributes);
  39. void EndElement(const std::string& name);
  40. void CharacterDataHandler(const char* data, int length);
  41. private:
  42. std::string FixPaths(const std::string& paths) const;
  43. std::string CharacterData;
  44. std::string Include;
  45. std::string Library;
  46. std::string Path;
  47. std::string PlatformName;
  48. std::string OSMajorVersion;
  49. std::string OSMinorVersion;
  50. std::map<std::string, std::string> Macros;
  51. std::vector<std::string> AvailablePlatforms;
  52. const char* RequiredName;
  53. bool FoundRequiredName;
  54. std::string VcInstallDir;
  55. std::string VsInstallDir;
  56. };