173844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton//===-- OptionValueBoolean.h ------------------------------------*- C++ -*-===// 273844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton// 373844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton// The LLVM Compiler Infrastructure 473844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton// 573844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton// This file is distributed under the University of Illinois Open Source 673844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton// License. See LICENSE.TXT for details. 773844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton// 873844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton//===----------------------------------------------------------------------===// 973844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton 1073844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton#ifndef liblldb_OptionValueBoolean_h_ 1173844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton#define liblldb_OptionValueBoolean_h_ 1273844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton 1373844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton// C Includes 1473844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton// C++ Includes 1573844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton// Other libraries and framework includes 1673844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton// Project includes 1773844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton#include "lldb/Interpreter/OptionValue.h" 1873844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton 1973844aa19a7360b662e2be710fc3c969d6c86606Greg Claytonnamespace lldb_private { 2073844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton 2173844aa19a7360b662e2be710fc3c969d6c86606Greg Claytonclass OptionValueBoolean : public OptionValue 2273844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton{ 2373844aa19a7360b662e2be710fc3c969d6c86606Greg Claytonpublic: 2473844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton OptionValueBoolean (bool value) : 2573844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton OptionValue(), 2673844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton m_current_value (value), 2773844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton m_default_value (value) 2873844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton { 2973844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton } 3073844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton OptionValueBoolean (bool current_value, 3173844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton bool default_value) : 3273844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton OptionValue(), 3373844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton m_current_value (current_value), 3473844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton m_default_value (default_value) 3573844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton { 3673844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton } 3773844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton 3873844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton virtual 3973844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton ~OptionValueBoolean() 4073844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton { 4173844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton } 4273844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton 4373844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton //--------------------------------------------------------------------- 4473844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton // Virtual subclass pure virtual overrides 4573844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton //--------------------------------------------------------------------- 4673844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton 4773844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton virtual OptionValue::Type 4873844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton GetType () const 4973844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton { 5073844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton return eTypeBoolean; 5173844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton } 5273844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton 5373844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton virtual void 5473844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton DumpValue (const ExecutionContext *exe_ctx, Stream &strm, uint32_t dump_mask); 5573844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton 5673844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton virtual Error 5773844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton SetValueFromCString (const char *value, 5873844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton VarSetOperationType op = eVarSetOperationAssign); 5973844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton 6073844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton virtual bool 6173844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton Clear () 6273844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton { 6373844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton m_current_value = m_default_value; 6473844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton m_value_was_set = false; 6573844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton return true; 6673844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton } 679f282851b07ff6daee37cd3b1a3fbc43ef11da29Greg Clayton 689f282851b07ff6daee37cd3b1a3fbc43ef11da29Greg Clayton virtual size_t 699f282851b07ff6daee37cd3b1a3fbc43ef11da29Greg Clayton AutoComplete (CommandInterpreter &interpreter, 709f282851b07ff6daee37cd3b1a3fbc43ef11da29Greg Clayton const char *s, 719f282851b07ff6daee37cd3b1a3fbc43ef11da29Greg Clayton int match_start_point, 729f282851b07ff6daee37cd3b1a3fbc43ef11da29Greg Clayton int max_return_elements, 739f282851b07ff6daee37cd3b1a3fbc43ef11da29Greg Clayton bool &word_complete, 749f282851b07ff6daee37cd3b1a3fbc43ef11da29Greg Clayton StringList &matches); 759f282851b07ff6daee37cd3b1a3fbc43ef11da29Greg Clayton 7673844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton //--------------------------------------------------------------------- 7773844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton // Subclass specific functions 7873844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton //--------------------------------------------------------------------- 7973844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton 8073844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton //------------------------------------------------------------------ 8173844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton /// Convert to bool operator. 8273844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton /// 8373844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton /// This allows code to check a OptionValueBoolean in conditions. 8473844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton /// 8573844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton /// @code 8673844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton /// OptionValueBoolean bool_value(...); 8773844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton /// if (bool_value) 8873844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton /// { ... 8973844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton /// @endcode 9073844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton /// 9173844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton /// @return 9273844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton /// /b True this object contains a valid namespace decl, \b 9373844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton /// false otherwise. 9473844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton //------------------------------------------------------------------ 9573844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton operator bool() const 9673844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton { 9773844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton return m_current_value; 9873844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton } 9973844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton 10073844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton const bool & 10173844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton operator = (bool b) 10273844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton { 10373844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton m_current_value = b; 10473844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton return m_current_value; 10573844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton } 10673844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton 10773844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton bool 10873844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton GetCurrentValue() const 10973844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton { 11073844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton return m_current_value; 11173844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton } 11273844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton 11373844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton bool 11473844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton GetDefaultValue() const 11573844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton { 11673844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton return m_default_value; 11773844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton } 11873844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton 11973844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton void 12073844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton SetCurrentValue (bool value) 12173844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton { 12273844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton m_current_value = value; 12373844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton } 12473844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton 12573844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton void 12673844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton SetDefaultValue (bool value) 12773844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton { 12873844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton m_default_value = value; 12973844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton } 13073844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton 13173844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton virtual lldb::OptionValueSP 13273844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton DeepCopy () const; 13373844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton 13473844aa19a7360b662e2be710fc3c969d6c86606Greg Claytonprotected: 13573844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton bool m_current_value; 13673844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton bool m_default_value; 13773844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton}; 13873844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton 13973844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton} // namespace lldb_private 14073844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton 14173844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton#endif // liblldb_OptionValueBoolean_h_ 142