
*** to conform to clang-format’s LLVM style. This kind of mass change has *** two obvious implications: Firstly, merging this particular commit into a downstream fork may be a huge effort. Alternatively, it may be worth merging all changes up to this commit, performing the same reformatting operation locally, and then discarding the merge for this particular commit. The commands used to accomplish this reformatting were as follows (with current working directory as the root of the repository): find . \( -iname "*.c" -or -iname "*.cpp" -or -iname "*.h" -or -iname "*.mm" \) -exec clang-format -i {} + find . -iname "*.py" -exec autopep8 --in-place --aggressive --aggressive {} + ; The version of clang-format used was 3.9.0, and autopep8 was 1.2.4. Secondly, “blame” style tools will generally point to this commit instead of a meaningful prior commit. There are alternatives available that will attempt to look through this change and find the appropriate prior commit. YMMV. llvm-svn: 280751
123 lines
4.4 KiB
C++
123 lines
4.4 KiB
C++
//===-- MICmdArgValBase.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
|
|
|
|
// C Includes
|
|
// C++ Includes
|
|
// Other libraries and framework includes
|
|
// Project includes
|
|
#include "MICmdArgSet.h"
|
|
#include "MIUtilString.h"
|
|
|
|
//++
|
|
//============================================================================
|
|
// Details: MI common code class. Command argument base class. Arguments objects
|
|
// needing specialization derived from *this class. 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 argument and so
|
|
// extract a value from it.
|
|
// Argument objects are added to the CMICmdArgSet container object.
|
|
// Once added the container they belong to that contain and will be
|
|
// deleted when the container goes out of scope. Allocate argument
|
|
// objects on the heap and pass in to the Add().
|
|
// Note the code is written such that a command will produce an error
|
|
// should it be presented with arguments or options it does not
|
|
// understand.
|
|
// A command can recognise an option or argument then ignore if it
|
|
// wishes (a warning is sent to the MI's Log file). This is so it is
|
|
// hardwired to fail and catch arguments or options that presented by
|
|
// different driver clients.
|
|
// Based on the Interpreter pattern.
|
|
//--
|
|
class CMICmdArgValBase : public CMICmdArgSet::IArg {
|
|
// Methods:
|
|
public:
|
|
CMICmdArgValBase();
|
|
CMICmdArgValBase(const CMIUtilString &vrArgName, const bool vbMandatory,
|
|
const bool vbHandleByCmd);
|
|
|
|
// Overrideable:
|
|
~CMICmdArgValBase() override = default;
|
|
|
|
// Overridden:
|
|
// From CMICmdArgSet::IArg
|
|
bool GetFound() const override;
|
|
bool GetIsHandledByCmd() const override;
|
|
bool GetIsMandatory() const override;
|
|
bool GetIsMissingOptions() const override;
|
|
const CMIUtilString &GetName() const override;
|
|
bool GetValid() const override;
|
|
bool Validate(CMICmdArgContext &vwArgContext) override;
|
|
|
|
// Attributes:
|
|
protected:
|
|
bool
|
|
m_bFound; // True = yes found in arguments options text, false = not found
|
|
bool m_bValid; // True = yes argument parsed and valid, false = not valid
|
|
bool
|
|
m_bMandatory; // True = yes arg must be present, false = optional argument
|
|
CMIUtilString m_strArgName;
|
|
bool m_bHandled; // True = Command processes *this option, false = not handled
|
|
bool m_bIsMissingOptions; // True = Command needs more information, false = ok
|
|
};
|
|
|
|
//++
|
|
//============================================================================
|
|
// Details: MI common code class. Templated command argument base class.
|
|
//--
|
|
template <class T> class CMICmdArgValBaseTemplate : public CMICmdArgValBase {
|
|
// Methods:
|
|
public:
|
|
CMICmdArgValBaseTemplate() = default;
|
|
CMICmdArgValBaseTemplate(const CMIUtilString &vrArgName,
|
|
const bool vbMandatory, const bool vbHandleByCmd);
|
|
//
|
|
const T &GetValue() const;
|
|
|
|
// Overrideable:
|
|
~CMICmdArgValBaseTemplate() override = default;
|
|
|
|
// Attributes:
|
|
protected:
|
|
T m_argValue;
|
|
};
|
|
|
|
//++
|
|
//------------------------------------------------------------------------------------
|
|
// Details: CMICmdArgValBaseTemplate constructor.
|
|
// Type: Method.
|
|
// Args: vrArgName - (R) Argument's name to search by.
|
|
// vbMandatory - (R) True = Yes must be present, false = optional
|
|
// argument.
|
|
// vbHandleByCmd - (R) True = Command processes *this option, false =
|
|
// not handled.
|
|
// Return: None.
|
|
// Throws: None.
|
|
//--
|
|
template <class T>
|
|
CMICmdArgValBaseTemplate<T>::CMICmdArgValBaseTemplate(
|
|
const CMIUtilString &vrArgName, const bool vbMandatory,
|
|
const bool vbHandleByCmd)
|
|
: CMICmdArgValBase(vrArgName, vbMandatory, vbHandleByCmd) {}
|
|
|
|
//++
|
|
//------------------------------------------------------------------------------------
|
|
// Details: Retrieve the value the argument parsed from the command's argument /
|
|
// options
|
|
// text string.
|
|
// Type: Method.
|
|
// Args: None.
|
|
// Return: Template type & - The arg value of *this object.
|
|
// Throws: None.
|
|
//--
|
|
template <class T> const T &CMICmdArgValBaseTemplate<T>::GetValue() const {
|
|
return m_argValue;
|
|
}
|