OptionValueEnumeration.h revision 9f282851b07ff6daee37cd3b1a3fbc43ef11da29
1d2771ed2249c645019b7b1e46bdd677d2ed1cfe1Daniel Malea//===-- OptionValueEnumeration.h --------------------------------*- C++ -*-===// 2d2771ed2249c645019b7b1e46bdd677d2ed1cfe1Daniel Malea// 3d2771ed2249c645019b7b1e46bdd677d2ed1cfe1Daniel Malea// The LLVM Compiler Infrastructure 4d2771ed2249c645019b7b1e46bdd677d2ed1cfe1Daniel Malea// 5d2771ed2249c645019b7b1e46bdd677d2ed1cfe1Daniel Malea// This file is distributed under the University of Illinois Open Source 6d2771ed2249c645019b7b1e46bdd677d2ed1cfe1Daniel Malea// License. See LICENSE.TXT for details. 7d2771ed2249c645019b7b1e46bdd677d2ed1cfe1Daniel Malea// 8d2771ed2249c645019b7b1e46bdd677d2ed1cfe1Daniel Malea//===----------------------------------------------------------------------===// 9d2771ed2249c645019b7b1e46bdd677d2ed1cfe1Daniel Malea 10d2771ed2249c645019b7b1e46bdd677d2ed1cfe1Daniel Malea#ifndef liblldb_OptionValueEnumeration_h_ 11d2771ed2249c645019b7b1e46bdd677d2ed1cfe1Daniel Malea#define liblldb_OptionValueEnumeration_h_ 12d2771ed2249c645019b7b1e46bdd677d2ed1cfe1Daniel Malea 13d2771ed2249c645019b7b1e46bdd677d2ed1cfe1Daniel Malea// C Includes 14d2771ed2249c645019b7b1e46bdd677d2ed1cfe1Daniel Malea// C++ Includes 15d2771ed2249c645019b7b1e46bdd677d2ed1cfe1Daniel Malea// Other libraries and framework includes 16d2771ed2249c645019b7b1e46bdd677d2ed1cfe1Daniel Malea// Project includes 17d2771ed2249c645019b7b1e46bdd677d2ed1cfe1Daniel Malea#include "lldb/Core/ConstString.h" 18d2771ed2249c645019b7b1e46bdd677d2ed1cfe1Daniel Malea#include "lldb/Core/Error.h" 19d2771ed2249c645019b7b1e46bdd677d2ed1cfe1Daniel Malea#include "lldb/Core/Stream.h" 20d2771ed2249c645019b7b1e46bdd677d2ed1cfe1Daniel Malea#include "lldb/Core/StreamString.h" 21d2771ed2249c645019b7b1e46bdd677d2ed1cfe1Daniel Malea#include "lldb/Core/UniqueCStringMap.h" 22d2771ed2249c645019b7b1e46bdd677d2ed1cfe1Daniel Malea#include "lldb/Interpreter/OptionValue.h" 23d2771ed2249c645019b7b1e46bdd677d2ed1cfe1Daniel Malea 24d2771ed2249c645019b7b1e46bdd677d2ed1cfe1Daniel Maleanamespace lldb_private { 25d2771ed2249c645019b7b1e46bdd677d2ed1cfe1Daniel Malea 26d2771ed2249c645019b7b1e46bdd677d2ed1cfe1Daniel Malea 27d2771ed2249c645019b7b1e46bdd677d2ed1cfe1Daniel Maleaclass OptionValueEnumeration : public OptionValue 28d2771ed2249c645019b7b1e46bdd677d2ed1cfe1Daniel Malea{ 29d2771ed2249c645019b7b1e46bdd677d2ed1cfe1Daniel Maleapublic: 30d2771ed2249c645019b7b1e46bdd677d2ed1cfe1Daniel Malea typedef int64_t enum_type; 31d2771ed2249c645019b7b1e46bdd677d2ed1cfe1Daniel Malea struct EnumeratorInfo 32d2771ed2249c645019b7b1e46bdd677d2ed1cfe1Daniel Malea { 33d2771ed2249c645019b7b1e46bdd677d2ed1cfe1Daniel Malea enum_type value; 34d2771ed2249c645019b7b1e46bdd677d2ed1cfe1Daniel Malea const char *description; 35d2771ed2249c645019b7b1e46bdd677d2ed1cfe1Daniel Malea }; 36d2771ed2249c645019b7b1e46bdd677d2ed1cfe1Daniel Malea typedef UniqueCStringMap<EnumeratorInfo> EnumerationMap; 37d2771ed2249c645019b7b1e46bdd677d2ed1cfe1Daniel Malea typedef typename EnumerationMap::Entry EnumerationMapEntry; 38d2771ed2249c645019b7b1e46bdd677d2ed1cfe1Daniel Malea 39d2771ed2249c645019b7b1e46bdd677d2ed1cfe1Daniel Malea OptionValueEnumeration (const OptionEnumValueElement *enumerators, enum_type value); 40d2771ed2249c645019b7b1e46bdd677d2ed1cfe1Daniel Malea 41d2771ed2249c645019b7b1e46bdd677d2ed1cfe1Daniel Malea virtual 42d2771ed2249c645019b7b1e46bdd677d2ed1cfe1Daniel Malea ~OptionValueEnumeration(); 43d2771ed2249c645019b7b1e46bdd677d2ed1cfe1Daniel Malea 44d2771ed2249c645019b7b1e46bdd677d2ed1cfe1Daniel Malea //--------------------------------------------------------------------- 45d2771ed2249c645019b7b1e46bdd677d2ed1cfe1Daniel Malea // Virtual subclass pure virtual overrides 46d2771ed2249c645019b7b1e46bdd677d2ed1cfe1Daniel Malea //--------------------------------------------------------------------- 47d2771ed2249c645019b7b1e46bdd677d2ed1cfe1Daniel Malea 48d2771ed2249c645019b7b1e46bdd677d2ed1cfe1Daniel Malea virtual OptionValue::Type 49d2771ed2249c645019b7b1e46bdd677d2ed1cfe1Daniel Malea GetType () const 50d2771ed2249c645019b7b1e46bdd677d2ed1cfe1Daniel Malea { 51d2771ed2249c645019b7b1e46bdd677d2ed1cfe1Daniel Malea return eTypeEnum; 52d2771ed2249c645019b7b1e46bdd677d2ed1cfe1Daniel Malea } 53d2771ed2249c645019b7b1e46bdd677d2ed1cfe1Daniel Malea 54d2771ed2249c645019b7b1e46bdd677d2ed1cfe1Daniel Malea virtual void 55d2771ed2249c645019b7b1e46bdd677d2ed1cfe1Daniel Malea DumpValue (const ExecutionContext *exe_ctx, Stream &strm, uint32_t dump_mask); 56d2771ed2249c645019b7b1e46bdd677d2ed1cfe1Daniel Malea 57d2771ed2249c645019b7b1e46bdd677d2ed1cfe1Daniel Malea virtual Error 58d2771ed2249c645019b7b1e46bdd677d2ed1cfe1Daniel Malea SetValueFromCString (const char *value, 59d2771ed2249c645019b7b1e46bdd677d2ed1cfe1Daniel Malea VarSetOperationType op = eVarSetOperationAssign); 60d2771ed2249c645019b7b1e46bdd677d2ed1cfe1Daniel Malea 61d2771ed2249c645019b7b1e46bdd677d2ed1cfe1Daniel Malea virtual bool 62d2771ed2249c645019b7b1e46bdd677d2ed1cfe1Daniel Malea Clear () 63d2771ed2249c645019b7b1e46bdd677d2ed1cfe1Daniel Malea { 64d2771ed2249c645019b7b1e46bdd677d2ed1cfe1Daniel Malea m_current_value = m_default_value; 65 m_value_was_set = false; 66 return true; 67 } 68 69 virtual lldb::OptionValueSP 70 DeepCopy () const; 71 72 virtual size_t 73 AutoComplete (CommandInterpreter &interpreter, 74 const char *s, 75 int match_start_point, 76 int max_return_elements, 77 bool &word_complete, 78 StringList &matches); 79 80 //--------------------------------------------------------------------- 81 // Subclass specific functions 82 //--------------------------------------------------------------------- 83 84 enum_type 85 operator = (enum_type value) 86 { 87 m_current_value = value; 88 return m_current_value; 89 } 90 91 enum_type 92 GetCurrentValue() const 93 { 94 return m_current_value; 95 } 96 97 enum_type 98 GetDefaultValue() const 99 { 100 return m_default_value; 101 } 102 103 void 104 SetCurrentValue (enum_type value) 105 { 106 m_current_value = value; 107 } 108 109 void 110 SetDefaultValue (enum_type value) 111 { 112 m_default_value = value; 113 } 114 115protected: 116 void 117 SetEnumerations (const OptionEnumValueElement *enumerators); 118 119 enum_type m_current_value; 120 enum_type m_default_value; 121 EnumerationMap m_enumerations; 122}; 123 124} // namespace lldb_private 125 126#endif // liblldb_OptionValueEnumeration_h_ 127