104 lines
		
	
	
		
			3.4 KiB
		
	
	
	
		
			C++
		
	
	
	
			
		
		
	
	
			104 lines
		
	
	
		
			3.4 KiB
		
	
	
	
		
			C++
		
	
	
	
| //===-- MICmdArgValListBase.h -----------------------------------*- C++ -*-===//
 | |
| //
 | |
| //                     The LLVM Compiler Infrastructure
 | |
| //
 | |
| // This file is distributed under the University of Illinois Open Source
 | |
| // License. See LICENSE.TXT for details.
 | |
| //
 | |
| //===----------------------------------------------------------------------===//
 | |
| 
 | |
| #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.
 | |
| //--
 | |
| 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_Consume,
 | |
|     eArgValType_Number,
 | |
|     eArgValType_OptionLong,
 | |
|     eArgValType_OptionShort,
 | |
|     eArgValType_String,
 | |
|     eArgValType_StringQuoted,
 | |
|     eArgValType_StringQuotedNumber,
 | |
|     eArgValType_StringQuotedNumberPath,
 | |
|     eArgValType_StringAnything, // Accept any words for a string 'type' even if
 | |
|                                 // they look like --longOptions for example
 | |
|     eArgValType_ThreadGrp,
 | |
|     eArgValType_count, // Always the last one
 | |
|     eArgValType_invalid
 | |
|   };
 | |
| 
 | |
|   // Methods:
 | |
| public:
 | |
|   /* ctor */ CMICmdArgValListBase();
 | |
|   /* 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 */ ~CMICmdArgValListBase() override;
 | |
| 
 | |
|   // 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();
 | |
| };
 |