
*** 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
165 lines
5.2 KiB
C++
165 lines
5.2 KiB
C++
//===-- MICmdArgValNumber.cpp -----------------------------------*- C++ -*-===//
|
|
//
|
|
// The LLVM Compiler Infrastructure
|
|
//
|
|
// This file is distributed under the University of Illinois Open Source
|
|
// License. See LICENSE.TXT for details.
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
// In-house headers:
|
|
#include "MICmdArgValNumber.h"
|
|
#include "MICmdArgContext.h"
|
|
|
|
//++
|
|
//------------------------------------------------------------------------------------
|
|
// Details: CMICmdArgValNumber constructor.
|
|
// Type: Method.
|
|
// Args: None.
|
|
// Return: None.
|
|
// Throws: None.
|
|
//--
|
|
CMICmdArgValNumber::CMICmdArgValNumber()
|
|
: m_nNumberFormatMask(CMICmdArgValNumber::eArgValNumberFormat_Decimal),
|
|
m_nNumber(0) {}
|
|
|
|
//++
|
|
//------------------------------------------------------------------------------------
|
|
// Details: CMICmdArgValNumber 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.
|
|
// vnNumberFormatMask - (R) Mask of the number formats. (Dflt =
|
|
// CMICmdArgValNumber::eArgValNumberFormat_Decimal)
|
|
// Return: None.
|
|
// Throws: None.
|
|
//--
|
|
CMICmdArgValNumber::CMICmdArgValNumber(
|
|
const CMIUtilString &vrArgName, const bool vbMandatory,
|
|
const bool vbHandleByCmd,
|
|
const MIuint
|
|
vnNumberFormatMask /* = CMICmdArgValNumber::eArgValNumberFormat_Decimal*/)
|
|
: CMICmdArgValBaseTemplate(vrArgName, vbMandatory, vbHandleByCmd),
|
|
m_nNumberFormatMask(vnNumberFormatMask), m_nNumber(0) {}
|
|
|
|
//++
|
|
//------------------------------------------------------------------------------------
|
|
// Details: CMICmdArgValNumber destructor.
|
|
// Type: Overridden.
|
|
// Args: None.
|
|
// Return: None.
|
|
// Throws: None.
|
|
//--
|
|
CMICmdArgValNumber::~CMICmdArgValNumber() {}
|
|
|
|
//++
|
|
//------------------------------------------------------------------------------------
|
|
// Details: Parse the command's argument options string and try to extract the
|
|
// value *this
|
|
// argument is looking for.
|
|
// Type: Overridden.
|
|
// Args: vwArgContext - (RW) The command's argument options string.
|
|
// Return: MIstatus::success - Functional succeeded.
|
|
// MIstatus::failure - Functional failed.
|
|
// Throws: None.
|
|
//--
|
|
bool CMICmdArgValNumber::Validate(CMICmdArgContext &vwArgContext) {
|
|
if (vwArgContext.IsEmpty())
|
|
return m_bMandatory ? MIstatus::failure : MIstatus::success;
|
|
|
|
if (vwArgContext.GetNumberArgsPresent() == 1) {
|
|
const CMIUtilString &rArg(vwArgContext.GetArgsLeftToParse());
|
|
if (IsArgNumber(rArg) && ExtractNumber(rArg)) {
|
|
m_bFound = true;
|
|
m_bValid = true;
|
|
m_argValue = GetNumber();
|
|
vwArgContext.RemoveArg(rArg);
|
|
return MIstatus::success;
|
|
} else
|
|
return MIstatus::failure;
|
|
}
|
|
|
|
// More than one option...
|
|
const CMIUtilString::VecString_t vecOptions(vwArgContext.GetArgs());
|
|
CMIUtilString::VecString_t::const_iterator it = vecOptions.begin();
|
|
while (it != vecOptions.end()) {
|
|
const CMIUtilString &rArg(*it);
|
|
if (IsArgNumber(rArg) && ExtractNumber(rArg)) {
|
|
m_bFound = true;
|
|
|
|
if (vwArgContext.RemoveArg(rArg)) {
|
|
m_bValid = true;
|
|
m_argValue = GetNumber();
|
|
return MIstatus::success;
|
|
} else
|
|
return MIstatus::failure;
|
|
}
|
|
|
|
// Next
|
|
++it;
|
|
}
|
|
|
|
return MIstatus::failure;
|
|
}
|
|
|
|
//++
|
|
//------------------------------------------------------------------------------------
|
|
// Details: Examine the string and determine if it is a valid string type
|
|
// argument.
|
|
// Type: Method.
|
|
// Args: vrTxt - (R) Some text.
|
|
// Return: bool - True = yes valid arg, false = no.
|
|
// Throws: None.
|
|
//--
|
|
bool CMICmdArgValNumber::IsArgNumber(const CMIUtilString &vrTxt) const {
|
|
const bool bFormatDecimal(m_nNumberFormatMask &
|
|
CMICmdArgValNumber::eArgValNumberFormat_Decimal);
|
|
const bool bFormatHexadecimal(
|
|
m_nNumberFormatMask &
|
|
CMICmdArgValNumber::eArgValNumberFormat_Hexadecimal);
|
|
|
|
// Look for --someLongOption
|
|
if (std::string::npos != vrTxt.find("--"))
|
|
return false;
|
|
|
|
if (bFormatDecimal && vrTxt.IsNumber())
|
|
return true;
|
|
|
|
if (bFormatHexadecimal && vrTxt.IsHexadecimalNumber())
|
|
return true;
|
|
|
|
return false;
|
|
}
|
|
|
|
//++
|
|
//------------------------------------------------------------------------------------
|
|
// Details: Extract the thread group number from the thread group argument.
|
|
// Type: Method.
|
|
// Args: vrTxt - (R) Some text.
|
|
// Return: MIstatus::success - Functional succeeded.
|
|
// MIstatus::failure - Functional failed.
|
|
// Throws: None.
|
|
//--
|
|
bool CMICmdArgValNumber::ExtractNumber(const CMIUtilString &vrTxt) {
|
|
MIint64 nNumber = 0;
|
|
bool bOk = vrTxt.ExtractNumber(nNumber);
|
|
if (bOk) {
|
|
m_nNumber = static_cast<MIint64>(nNumber);
|
|
}
|
|
|
|
return bOk;
|
|
}
|
|
|
|
//++
|
|
//------------------------------------------------------------------------------------
|
|
// Details: Retrieve the thread group ID found in the argument.
|
|
// Type: Method.
|
|
// Args: None.
|
|
// Return: MIuint - Thread group ID.
|
|
// Throws: None.
|
|
//--
|
|
MIint64 CMICmdArgValNumber::GetNumber() const { return m_nNumber; }
|