1 //===-- OptionGroupPlatform.h -----------------------------------*- C++ -*-===// 2 // 3 // The LLVM Compiler Infrastructure 4 // 5 // This file is distributed under the University of Illinois Open Source 6 // License. See LICENSE.TXT for details. 7 // 8 //===----------------------------------------------------------------------===// 9 10 #ifndef liblldb_OptionGroupPlatform_h_ 11 #define liblldb_OptionGroupPlatform_h_ 12 13 // C Includes 14 // C++ Includes 15 // Other libraries and framework includes 16 // Project includes 17 #include "lldb/Core/ConstString.h" 18 #include "lldb/Interpreter/Options.h" 19 20 namespace lldb_private { 21 22 //------------------------------------------------------------------------- 23 // PlatformOptionGroup 24 // 25 // Make platform options available to any commands that need the settings. 26 //------------------------------------------------------------------------- 27 class OptionGroupPlatform : public OptionGroup 28 { 29 public: 30 OptionGroupPlatform(bool include_platform_option)31 OptionGroupPlatform (bool include_platform_option) : 32 OptionGroup(), 33 m_platform_name (), 34 m_sdk_sysroot (), 35 m_os_version_major (UINT32_MAX), 36 m_os_version_minor (UINT32_MAX), 37 m_os_version_update (UINT32_MAX), 38 m_include_platform_option (include_platform_option) 39 { 40 } 41 42 virtual ~OptionGroupPlatform()43 ~OptionGroupPlatform () 44 { 45 } 46 47 virtual uint32_t 48 GetNumDefinitions (); 49 50 virtual const OptionDefinition* 51 GetDefinitions (); 52 53 virtual Error 54 SetOptionValue (CommandInterpreter &interpreter, 55 uint32_t option_idx, 56 const char *option_value); 57 58 virtual void 59 OptionParsingStarting (CommandInterpreter &interpreter); 60 61 lldb::PlatformSP 62 CreatePlatformWithOptions (CommandInterpreter &interpreter, 63 const ArchSpec &arch, 64 bool make_selected, 65 Error& error, 66 ArchSpec &platform_arch) const; 67 68 bool PlatformWasSpecified()69 PlatformWasSpecified () const 70 { 71 return !m_platform_name.empty(); 72 } 73 74 void SetPlatformName(const char * platform_name)75 SetPlatformName (const char *platform_name) 76 { 77 if (platform_name && platform_name[0]) 78 m_platform_name.assign (platform_name); 79 else 80 m_platform_name.clear(); 81 } 82 83 const ConstString & GetSDKRootDirectory()84 GetSDKRootDirectory () const 85 { 86 return m_sdk_sysroot; 87 } 88 89 void SetSDKRootDirectory(const ConstString & sdk_root_directory)90 SetSDKRootDirectory (const ConstString &sdk_root_directory) 91 { 92 m_sdk_sysroot = sdk_root_directory; 93 } 94 95 const ConstString & GetSDKBuild()96 GetSDKBuild () const 97 { 98 return m_sdk_build; 99 } 100 101 void SetSDKBuild(const ConstString & sdk_build)102 SetSDKBuild (const ConstString &sdk_build) 103 { 104 m_sdk_build = sdk_build; 105 } 106 107 108 protected: 109 std::string m_platform_name; 110 ConstString m_sdk_sysroot; 111 ConstString m_sdk_build; 112 uint32_t m_os_version_major; 113 uint32_t m_os_version_minor; 114 uint32_t m_os_version_update; 115 bool m_include_platform_option; 116 }; 117 118 } // namespace lldb_private 119 120 #endif // liblldb_OptionGroupPlatform_h_ 121