A lot of comments in LLDB are surrounded by an ASCII line to delimit the begging and end of the comment. Its use is not really consistent across the code base, sometimes the lines are longer, sometimes they are shorter and sometimes they are omitted. Furthermore, it looks kind of weird with the 80 column limit, where the comment actually extends past the line, but not by much. Furthermore, when /// is used for Doxygen comments, it looks particularly odd. And when // is used, it incorrectly gives the impression that it's actually a Doxygen comment. I assume these lines were added to improve distinguishing between comments and code. However, given that todays editors and IDEs do a great job at highlighting comments, I think it's worth to drop this for the sake of consistency. The alternative is fixing all the inconsistencies, which would create a lot more churn. Differential revision: https://reviews.llvm.org/D60508 llvm-svn: 358135
116 lines
4.2 KiB
C++
116 lines
4.2 KiB
C++
//===-- MICmdArgValBase.h ---------------------------------------*- C++ -*-===//
|
|
//
|
|
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
|
|
// See https://llvm.org/LICENSE.txt for license information.
|
|
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
#pragma once
|
|
|
|
#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;
|
|
}
|