aboutsummaryrefslogtreecommitdiff
path: root/tools/lldb-mi/MICmdArgValListOfN.h
diff options
context:
space:
mode:
Diffstat (limited to 'tools/lldb-mi/MICmdArgValListOfN.h')
-rw-r--r--tools/lldb-mi/MICmdArgValListOfN.h22
1 files changed, 7 insertions, 15 deletions
diff --git a/tools/lldb-mi/MICmdArgValListOfN.h b/tools/lldb-mi/MICmdArgValListOfN.h
index 48ee77f79e72b..356b494c0898e 100644
--- a/tools/lldb-mi/MICmdArgValListOfN.h
+++ b/tools/lldb-mi/MICmdArgValListOfN.h
@@ -7,18 +7,6 @@
//
//===----------------------------------------------------------------------===//
-//++
-// File: MICmdArgValListOfN.h
-//
-// Overview: CMICmdArgValListOfN 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:
@@ -56,7 +44,7 @@ class CMICmdArgValListOfN : public CMICmdArgValListBase
const ArgValType_e veType);
//
const VecArgObjPtr_t &GetExpectedOptions(void) const;
- template <class T1, typename T2> bool GetExpectedOption(T2 &vrwValue) const;
+ template <class T1, typename T2> bool GetExpectedOption(T2 &vrwValue, const VecArgObjPtr_t::size_type vnAt = 0) const;
// Overridden:
public:
@@ -76,6 +64,7 @@ class CMICmdArgValListOfN : public CMICmdArgValListBase
// parsed from the command's options string.
// Type: Template method.
// Args: vrwValue - (W) Templated type return value.
+// vnAt - (R) Value at the specific position.
// T1 - The argument value's class type of the data hold in the list of options.
// T2 - The type pf the variable which holds the value wanted.
// Return: MIstatus::success - Functional succeeded.
@@ -84,10 +73,13 @@ class CMICmdArgValListOfN : public CMICmdArgValListBase
//--
template <class T1, typename T2>
bool
-CMICmdArgValListOfN::GetExpectedOption(T2 &vrwValue) const
+CMICmdArgValListOfN::GetExpectedOption(T2 &vrwValue, const VecArgObjPtr_t::size_type vnAt) const
{
const VecArgObjPtr_t &rVecOptions(GetExpectedOptions());
- VecArgObjPtr_t::const_iterator it2 = rVecOptions.begin();
+ if (rVecOptions.size() <= vnAt)
+ return MIstatus::failure;
+
+ VecArgObjPtr_t::const_iterator it2 = rVecOptions.begin() + vnAt;
if (it2 != rVecOptions.end())
{
const T1 *pOption = static_cast<T1 *>(*it2);