173844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton//===-- OptionValueRegex.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_OptionValueRegex_h_ 1173844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton#define liblldb_OptionValueRegex_h_ 1273844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton 1373844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton// C Includes 1473844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton// C++ Includes 1573844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton#include <string> 1673844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton 1773844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton// Other libraries and framework includes 1873844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton// Project includes 1973844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton#include "lldb/Core/RegularExpression.h" 2073844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton#include "lldb/Interpreter/OptionValue.h" 2173844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton 2273844aa19a7360b662e2be710fc3c969d6c86606Greg Claytonnamespace lldb_private { 2373844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton 2473844aa19a7360b662e2be710fc3c969d6c86606Greg Claytonclass OptionValueRegex : public OptionValue 2573844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton{ 2673844aa19a7360b662e2be710fc3c969d6c86606Greg Claytonpublic: 2773844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton OptionValueRegex (const char *value = NULL, uint32_t regex_flags = 0) : 2873844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton OptionValue(), 2973844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton m_regex (value, regex_flags) 3073844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton { 3173844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton } 3273844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton 3373844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton virtual 3473844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton ~OptionValueRegex() 3573844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton { 3673844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton } 3773844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton 3873844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton //--------------------------------------------------------------------- 3973844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton // Virtual subclass pure virtual overrides 4073844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton //--------------------------------------------------------------------- 4173844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton 4273844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton virtual OptionValue::Type 4373844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton GetType () const 4473844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton { 4573844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton return eTypeRegex; 4673844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton } 4773844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton 4873844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton virtual void 4973844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton DumpValue (const ExecutionContext *exe_ctx, Stream &strm, uint32_t dump_mask); 5073844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton 5173844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton virtual Error 5273844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton SetValueFromCString (const char *value, 5373844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton VarSetOperationType op = eVarSetOperationAssign); 5473844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton 5573844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton virtual bool 5673844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton Clear () 5773844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton { 5873844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton m_regex.Clear(); 5973844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton m_value_was_set = false; 6073844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton return true; 6173844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton } 6273844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton 6373844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton virtual lldb::OptionValueSP 6473844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton DeepCopy () const; 6573844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton 6673844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton //--------------------------------------------------------------------- 6773844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton // Subclass specific functions 6873844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton //--------------------------------------------------------------------- 6973844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton const RegularExpression * 7073844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton GetCurrentValue() const 7173844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton { 7273844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton if (m_regex.IsValid()) 7373844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton return &m_regex; 7473844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton return NULL; 7573844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton } 7673844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton 7773844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton void 7873844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton SetCurrentValue (const char *value, uint32_t regex_flags) 7973844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton { 8073844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton if (value && value[0]) 8173844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton m_regex.Compile (value, regex_flags); 8273844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton else 8373844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton m_regex.Clear(); 8473844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton } 8573844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton 8673844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton bool 8773844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton IsValid () const 8873844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton { 8973844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton return m_regex.IsValid(); 9073844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton } 9173844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton 9273844aa19a7360b662e2be710fc3c969d6c86606Greg Claytonprotected: 9373844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton RegularExpression m_regex; 9473844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton}; 9573844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton 9673844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton} // namespace lldb_private 9773844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton 9873844aa19a7360b662e2be710fc3c969d6c86606Greg Clayton#endif // liblldb_OptionValueRegex_h_ 99