diff options
Diffstat (limited to 'lldb/tools/lldb-mi/MICmdArgValListBase.h')
-rw-r--r-- | lldb/tools/lldb-mi/MICmdArgValListBase.h | 98 |
1 files changed, 98 insertions, 0 deletions
diff --git a/lldb/tools/lldb-mi/MICmdArgValListBase.h b/lldb/tools/lldb-mi/MICmdArgValListBase.h new file mode 100644 index 00000000000..e695ddf045f --- /dev/null +++ b/lldb/tools/lldb-mi/MICmdArgValListBase.h @@ -0,0 +1,98 @@ +//===-- MICmdArgValListBase.h -----------------------------------*- C++ -*-===// +// +// The LLVM Compiler Infrastructure +// +// This file is distributed under the University of Illinois Open Source +// License. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// + +//++ +// File: MICmdArgValListBase.h +// +// Overview: CMICmdArgValListBase interface. +// +// Environment: Compilers: Visual C++ 12. +// gcc (Ubuntu/Linaro 4.8.1-10ubuntu9) 4.8.1 +// Libraries: See MIReadmetxt. +// +// Copyright: None. +//-- + +#pragma once + +// Third party headers: +#include <vector> + +// In-house headers: +#include "MICmdArgValBase.h" + +// Declarations: +class CMICmdArgContext; + +//++ ============================================================================ +// Details: MI common code class. Command argument with addition options class. +// For example --recurse 1 2 4 [group ...]. Arguments object that +// require a list of options associated with them derive from the +// CMICmdArgValListBase class. Additional options are also extracted from +// the command arguments text string. +// An argument knows what type of argument it is and how it is to +// interpret the options (context) string to find and validate a matching +// options and so extract a values from it . +// The CMICmdArgValBase objects are added to the derived argument class's +// container. The option arguments belong to that derived class and will +// be deleted that object goes out of scope. +// Based on the Interpreter pattern. +// Gotchas: None. +// Authors: Illya Rudkin 16/04/2014. +// Changes: None. +//-- +class CMICmdArgValListBase : public CMICmdArgValBaseTemplate< std::vector< CMICmdArgValBase * > > +{ +// Typedef: +public: + typedef std::vector< CMICmdArgValBase * > VecArgObjPtr_t; + +// Enums: +public: + //++ --------------------------------------------------------------------------------- + // Details: CMICmdArgValListBase needs to know what type of argument to look for in + // the command options text. It also needs to create argument objects of + // a specific type. + //-- + enum ArgValType_e + { + eArgValType_File = 0, + eArgValType_Number, + eArgValType_OptionLong, + eArgValType_OptionShort, + eArgValType_String, + eArgValType_ThreadGrp, + eArgValType_count, // Always the last one + eArgValType_invalid + }; + +// Methods: +public: + /* ctor */ CMICmdArgValListBase( void ); + /* ctor */ CMICmdArgValListBase( const CMIUtilString & vrArgName, const bool vbMandatory, const bool vbHandleByCmd ); + /* ctor */ CMICmdArgValListBase( const CMIUtilString & vrArgName, const bool vbMandatory, const bool vbHandleByCmd, const ArgValType_e veType ); + +// Overridden: +public: + // From CMICmdArgValBase + /* dtor */ virtual ~CMICmdArgValListBase( void ); + +// Methods: +protected: + bool IsExpectedCorrectType( const CMIUtilString & vrTxt, const ArgValType_e veType ) const; + CMICmdArgValBase * CreationObj( const CMIUtilString & vrTxt, const ArgValType_e veType ) const; + +// Attributes: +protected: + ArgValType_e m_eArgType; + +// Methods: +private: + void Destroy( void ); +}; |