Deepak Panickal | 6f9c468 | 2014-05-16 10:51:01 +0000 | [diff] [blame] | 1 | //===-- MICmdArgValOptionLong.cpp -------------------------------*- C++ -*-===// |
| 2 | // |
| 3 | // The LLVM Compiler Infrastructure |
| 4 | // |
| 5 | // This file is distributed under the University of Illinois Open Source |
| 6 | // License. See LICENSE.TXT for details. |
| 7 | // |
| 8 | //===----------------------------------------------------------------------===// |
| 9 | |
Deepak Panickal | 6f9c468 | 2014-05-16 10:51:01 +0000 | [diff] [blame] | 10 | // In-house headers: |
| 11 | #include "MICmdArgValOptionLong.h" |
| 12 | #include "MICmdArgContext.h" |
| 13 | |
Kate Stone | b9c1b51 | 2016-09-06 20:57:50 +0000 | [diff] [blame^] | 14 | //++ |
| 15 | //------------------------------------------------------------------------------------ |
Zachary Turner | 1d6af02 | 2014-11-17 18:06:21 +0000 | [diff] [blame] | 16 | // Details: CMICmdArgValOptionLong constructor. |
| 17 | // Type: Method. |
| 18 | // Args: None. |
| 19 | // Return: None. |
| 20 | // Throws: None. |
Deepak Panickal | 6f9c468 | 2014-05-16 10:51:01 +0000 | [diff] [blame] | 21 | //-- |
Bruce Mitchener | e2453af | 2015-08-04 10:24:20 +0000 | [diff] [blame] | 22 | CMICmdArgValOptionLong::CMICmdArgValOptionLong() |
Kate Stone | b9c1b51 | 2016-09-06 20:57:50 +0000 | [diff] [blame^] | 23 | : m_nExpectingNOptions(0), m_eExpectingOptionType(eArgValType_invalid) {} |
Deepak Panickal | 6f9c468 | 2014-05-16 10:51:01 +0000 | [diff] [blame] | 24 | |
Kate Stone | b9c1b51 | 2016-09-06 20:57:50 +0000 | [diff] [blame^] | 25 | //++ |
| 26 | //------------------------------------------------------------------------------------ |
Zachary Turner | 1d6af02 | 2014-11-17 18:06:21 +0000 | [diff] [blame] | 27 | // Details: CMICmdArgValOptionLong constructor. |
| 28 | // Type: Method. |
| 29 | // Args: vrArgName - (R) Argument's name to search by. |
Kate Stone | b9c1b51 | 2016-09-06 20:57:50 +0000 | [diff] [blame^] | 30 | // vbMandatory - (R) True = Yes must be present, false = optional |
| 31 | // argument. |
| 32 | // vbHandleByCmd - (R) True = Command processes *this option, false = |
| 33 | // not handled. |
Zachary Turner | 1d6af02 | 2014-11-17 18:06:21 +0000 | [diff] [blame] | 34 | // Return: None. |
| 35 | // Throws: None. |
Deepak Panickal | 6f9c468 | 2014-05-16 10:51:01 +0000 | [diff] [blame] | 36 | //-- |
Kate Stone | b9c1b51 | 2016-09-06 20:57:50 +0000 | [diff] [blame^] | 37 | CMICmdArgValOptionLong::CMICmdArgValOptionLong(const CMIUtilString &vrArgName, |
| 38 | const bool vbMandatory, |
| 39 | const bool vbHandleByCmd) |
| 40 | : CMICmdArgValListBase(vrArgName, vbMandatory, vbHandleByCmd), |
| 41 | m_nExpectingNOptions(0), m_eExpectingOptionType(eArgValType_invalid) {} |
Deepak Panickal | 6f9c468 | 2014-05-16 10:51:01 +0000 | [diff] [blame] | 42 | |
Kate Stone | b9c1b51 | 2016-09-06 20:57:50 +0000 | [diff] [blame^] | 43 | //++ |
| 44 | //------------------------------------------------------------------------------------ |
Zachary Turner | 1d6af02 | 2014-11-17 18:06:21 +0000 | [diff] [blame] | 45 | // Details: CMICmdArgValOptionLong constructor. |
| 46 | // Type: Method. |
| 47 | // Args: vrArgName - (R) Argument's name to search by. |
Kate Stone | b9c1b51 | 2016-09-06 20:57:50 +0000 | [diff] [blame^] | 48 | // vbMandatory - (R) True = Yes must be present, false = |
| 49 | // optional argument. |
| 50 | // vbHandleByCmd - (R) True = Command processes *this option, |
| 51 | // false = not handled. |
| 52 | // veType - (R) The type of argument to look for and |
| 53 | // create argument object of a certain type. |
| 54 | // vnExpectingNOptions - (R) The number of options expected to read |
| 55 | // following *this argument. |
Zachary Turner | 1d6af02 | 2014-11-17 18:06:21 +0000 | [diff] [blame] | 56 | // Return: None. |
| 57 | // Throws: None. |
Deepak Panickal | 6f9c468 | 2014-05-16 10:51:01 +0000 | [diff] [blame] | 58 | //-- |
Kate Stone | b9c1b51 | 2016-09-06 20:57:50 +0000 | [diff] [blame^] | 59 | CMICmdArgValOptionLong::CMICmdArgValOptionLong(const CMIUtilString &vrArgName, |
| 60 | const bool vbMandatory, |
| 61 | const bool vbHandleByCmd, |
| 62 | const ArgValType_e veType, |
| 63 | const MIuint vnExpectingNOptions) |
| 64 | : CMICmdArgValListBase(vrArgName, vbMandatory, vbHandleByCmd), |
| 65 | m_nExpectingNOptions(vnExpectingNOptions), |
| 66 | m_eExpectingOptionType(veType) {} |
Deepak Panickal | 6f9c468 | 2014-05-16 10:51:01 +0000 | [diff] [blame] | 67 | |
Kate Stone | b9c1b51 | 2016-09-06 20:57:50 +0000 | [diff] [blame^] | 68 | //++ |
| 69 | //------------------------------------------------------------------------------------ |
Zachary Turner | 1d6af02 | 2014-11-17 18:06:21 +0000 | [diff] [blame] | 70 | // Details: CMICmdArgValOptionLong destructor. |
| 71 | // Type: Overridden. |
| 72 | // Args: None. |
| 73 | // Return: None. |
| 74 | // Throws: None. |
Deepak Panickal | 6f9c468 | 2014-05-16 10:51:01 +0000 | [diff] [blame] | 75 | //-- |
Kate Stone | b9c1b51 | 2016-09-06 20:57:50 +0000 | [diff] [blame^] | 76 | CMICmdArgValOptionLong::~CMICmdArgValOptionLong() { |
| 77 | // Tidy up |
| 78 | Destroy(); |
Deepak Panickal | 6f9c468 | 2014-05-16 10:51:01 +0000 | [diff] [blame] | 79 | } |
| 80 | |
Kate Stone | b9c1b51 | 2016-09-06 20:57:50 +0000 | [diff] [blame^] | 81 | //++ |
| 82 | //------------------------------------------------------------------------------------ |
Zachary Turner | 1d6af02 | 2014-11-17 18:06:21 +0000 | [diff] [blame] | 83 | // Details: Tear down resources used by *this object. |
| 84 | // Type: Method. |
| 85 | // Args: None. |
| 86 | // Return: None. |
| 87 | // Throws: None. |
Deepak Panickal | 6f9c468 | 2014-05-16 10:51:01 +0000 | [diff] [blame] | 88 | //-- |
Kate Stone | b9c1b51 | 2016-09-06 20:57:50 +0000 | [diff] [blame^] | 89 | void CMICmdArgValOptionLong::Destroy() { |
| 90 | // Tidy up |
| 91 | VecArgObjPtr_t::const_iterator it = m_vecArgsExpected.begin(); |
| 92 | while (it != m_vecArgsExpected.end()) { |
| 93 | CMICmdArgValBase *pOptionObj = *it; |
| 94 | delete pOptionObj; |
Deepak Panickal | 6f9c468 | 2014-05-16 10:51:01 +0000 | [diff] [blame] | 95 | |
Kate Stone | b9c1b51 | 2016-09-06 20:57:50 +0000 | [diff] [blame^] | 96 | // Next |
| 97 | ++it; |
| 98 | } |
| 99 | m_vecArgsExpected.clear(); |
Deepak Panickal | 6f9c468 | 2014-05-16 10:51:01 +0000 | [diff] [blame] | 100 | } |
| 101 | |
Kate Stone | b9c1b51 | 2016-09-06 20:57:50 +0000 | [diff] [blame^] | 102 | //++ |
| 103 | //------------------------------------------------------------------------------------ |
| 104 | // Details: Parse the command's argument options string and try to extract the |
| 105 | // long |
Zachary Turner | 1d6af02 | 2014-11-17 18:06:21 +0000 | [diff] [blame] | 106 | // argument *this argument type is looking for. |
| 107 | // Type: Overridden. |
| 108 | // Args: vwArgContext - (RW) The command's argument options string. |
| 109 | // Return: MIstatus::success - Functional succeeded. |
| 110 | // MIstatus::failure - Functional failed. |
| 111 | // Throws: None. |
Deepak Panickal | 6f9c468 | 2014-05-16 10:51:01 +0000 | [diff] [blame] | 112 | //-- |
Kate Stone | b9c1b51 | 2016-09-06 20:57:50 +0000 | [diff] [blame^] | 113 | bool CMICmdArgValOptionLong::Validate(CMICmdArgContext &vwArgContext) { |
| 114 | if (vwArgContext.IsEmpty()) |
| 115 | return m_bMandatory ? MIstatus::failure : MIstatus::success; |
Deepak Panickal | 6f9c468 | 2014-05-16 10:51:01 +0000 | [diff] [blame] | 116 | |
Kate Stone | b9c1b51 | 2016-09-06 20:57:50 +0000 | [diff] [blame^] | 117 | if (vwArgContext.GetNumberArgsPresent() == 1) { |
| 118 | const CMIUtilString &rArg(vwArgContext.GetArgsLeftToParse()); |
| 119 | if (IsArgLongOption(rArg) && ArgNameMatch(rArg)) { |
| 120 | m_bFound = true; |
Deepak Panickal | 6f9c468 | 2014-05-16 10:51:01 +0000 | [diff] [blame] | 121 | |
Kate Stone | b9c1b51 | 2016-09-06 20:57:50 +0000 | [diff] [blame^] | 122 | if (!vwArgContext.RemoveArg(rArg)) |
| 123 | return MIstatus::failure; |
Deepak Panickal | 6f9c468 | 2014-05-16 10:51:01 +0000 | [diff] [blame] | 124 | |
Kate Stone | b9c1b51 | 2016-09-06 20:57:50 +0000 | [diff] [blame^] | 125 | if (m_nExpectingNOptions == 0) { |
| 126 | m_bValid = true; |
| 127 | return MIstatus::success; |
| 128 | } |
Deepak Panickal | 6f9c468 | 2014-05-16 10:51:01 +0000 | [diff] [blame] | 129 | |
Kate Stone | b9c1b51 | 2016-09-06 20:57:50 +0000 | [diff] [blame^] | 130 | m_bIsMissingOptions = true; |
| 131 | return MIstatus::failure; |
| 132 | } else |
| 133 | return MIstatus::failure; |
| 134 | } |
Deepak Panickal | 6f9c468 | 2014-05-16 10:51:01 +0000 | [diff] [blame] | 135 | |
Kate Stone | b9c1b51 | 2016-09-06 20:57:50 +0000 | [diff] [blame^] | 136 | // More than one option... |
| 137 | MIuint nArgIndex = 0; |
| 138 | const CMIUtilString::VecString_t vecOptions(vwArgContext.GetArgs()); |
| 139 | CMIUtilString::VecString_t::const_iterator it = vecOptions.begin(); |
| 140 | while (it != vecOptions.end()) { |
| 141 | const CMIUtilString &rArg(*it); |
| 142 | if (IsArgOptionCorrect(rArg) && ArgNameMatch(rArg)) { |
| 143 | m_bFound = true; |
Deepak Panickal | 6f9c468 | 2014-05-16 10:51:01 +0000 | [diff] [blame] | 144 | |
Kate Stone | b9c1b51 | 2016-09-06 20:57:50 +0000 | [diff] [blame^] | 145 | if (!vwArgContext.RemoveArg(rArg)) |
| 146 | return MIstatus::failure; |
Zachary Turner | 1d6af02 | 2014-11-17 18:06:21 +0000 | [diff] [blame] | 147 | |
Kate Stone | b9c1b51 | 2016-09-06 20:57:50 +0000 | [diff] [blame^] | 148 | if (m_nExpectingNOptions != 0) { |
| 149 | if (ExtractExpectedOptions(vwArgContext, nArgIndex)) { |
| 150 | m_bValid = true; |
| 151 | return MIstatus::success; |
Zachary Turner | 1d6af02 | 2014-11-17 18:06:21 +0000 | [diff] [blame] | 152 | } |
| 153 | |
Kate Stone | b9c1b51 | 2016-09-06 20:57:50 +0000 | [diff] [blame^] | 154 | m_bIsMissingOptions = true; |
| 155 | return MIstatus::failure; |
| 156 | } else { |
| 157 | m_bValid = true; |
| 158 | return MIstatus::success; |
| 159 | } |
Zachary Turner | 1d6af02 | 2014-11-17 18:06:21 +0000 | [diff] [blame] | 160 | } |
| 161 | |
Kate Stone | b9c1b51 | 2016-09-06 20:57:50 +0000 | [diff] [blame^] | 162 | // Next |
| 163 | ++it; |
| 164 | ++nArgIndex; |
| 165 | } |
| 166 | |
| 167 | return MIstatus::failure; |
Deepak Panickal | 6f9c468 | 2014-05-16 10:51:01 +0000 | [diff] [blame] | 168 | } |
| 169 | |
Kate Stone | b9c1b51 | 2016-09-06 20:57:50 +0000 | [diff] [blame^] | 170 | //++ |
| 171 | //------------------------------------------------------------------------------------ |
| 172 | // Details: Parse the text following *this argument and extract the options the |
| 173 | // values of |
| 174 | // CMICmdArgValListBase::m_eArgType forming argument objects for each |
| 175 | // of those |
Zachary Turner | 1d6af02 | 2014-11-17 18:06:21 +0000 | [diff] [blame] | 176 | // options extracted. |
| 177 | // Type: Method. |
| 178 | // Args: vrwTxt - (RW) The command's argument options string. |
Kate Stone | b9c1b51 | 2016-09-06 20:57:50 +0000 | [diff] [blame^] | 179 | // nArgIndex - (R) The Nth arg position in argument context from |
| 180 | // the left. |
Zachary Turner | 1d6af02 | 2014-11-17 18:06:21 +0000 | [diff] [blame] | 181 | // Return: MIstatus::success - Functional succeeded. |
| 182 | // MIstatus::failure - Functional failed. |
| 183 | // Throws: None. |
Deepak Panickal | 6f9c468 | 2014-05-16 10:51:01 +0000 | [diff] [blame] | 184 | //-- |
Kate Stone | b9c1b51 | 2016-09-06 20:57:50 +0000 | [diff] [blame^] | 185 | bool CMICmdArgValOptionLong::ExtractExpectedOptions(CMICmdArgContext &vrwTxt, |
| 186 | const MIuint nArgIndex) { |
| 187 | CMIUtilString::VecString_t vecOptions; |
| 188 | MIuint nOptionsPresent = 0; |
| 189 | if ((m_eExpectingOptionType != eArgValType_StringQuoted) && |
| 190 | (m_eExpectingOptionType != eArgValType_StringQuotedNumber) && |
| 191 | (m_eExpectingOptionType != eArgValType_StringQuotedNumberPath)) |
| 192 | nOptionsPresent = vrwTxt.GetArgsLeftToParse().Split(" ", vecOptions); |
| 193 | else |
| 194 | nOptionsPresent = |
| 195 | vrwTxt.GetArgsLeftToParse().SplitConsiderQuotes(" ", vecOptions); |
| 196 | if (nOptionsPresent == 0) |
| 197 | return MIstatus::failure; |
Deepak Panickal | 6f9c468 | 2014-05-16 10:51:01 +0000 | [diff] [blame] | 198 | |
Kate Stone | b9c1b51 | 2016-09-06 20:57:50 +0000 | [diff] [blame^] | 199 | MIuint nArgIndexCnt = 0; |
| 200 | MIuint nTypeCnt = 0; |
| 201 | MIuint nTypeCnt2 = 0; |
| 202 | MIuint nFoundNOptionsCnt = 0; |
| 203 | CMIUtilString::VecString_t::const_iterator it = vecOptions.begin(); |
| 204 | while (it != vecOptions.end()) { |
| 205 | // Move to the Nth argument position from left before do validation/checking |
| 206 | if (nArgIndexCnt++ == nArgIndex) { |
| 207 | nTypeCnt++; |
| 208 | const CMIUtilString &rOption(*it); |
| 209 | if (IsExpectedCorrectType(rOption, m_eExpectingOptionType)) { |
| 210 | nTypeCnt2++; |
| 211 | CMICmdArgValBase *pOptionObj = |
| 212 | CreationObj(rOption, m_eExpectingOptionType); |
| 213 | if ((pOptionObj != nullptr) && |
| 214 | vrwTxt.RemoveArgAtPos(rOption, nArgIndex)) { |
| 215 | nFoundNOptionsCnt++; |
| 216 | m_vecArgsExpected.push_back(pOptionObj); |
Zachary Turner | 1d6af02 | 2014-11-17 18:06:21 +0000 | [diff] [blame] | 217 | } |
Kate Stone | b9c1b51 | 2016-09-06 20:57:50 +0000 | [diff] [blame^] | 218 | } |
Deepak Panickal | 6f9c468 | 2014-05-16 10:51:01 +0000 | [diff] [blame] | 219 | |
Kate Stone | b9c1b51 | 2016-09-06 20:57:50 +0000 | [diff] [blame^] | 220 | // Is the sequence 'options' of same type broken. Expecting the same type |
| 221 | // until the |
| 222 | // next argument. |
| 223 | if (nTypeCnt != nTypeCnt2) |
Zachary Turner | 1d6af02 | 2014-11-17 18:06:21 +0000 | [diff] [blame] | 224 | return MIstatus::failure; |
Deepak Panickal | 6f9c468 | 2014-05-16 10:51:01 +0000 | [diff] [blame] | 225 | |
Kate Stone | b9c1b51 | 2016-09-06 20:57:50 +0000 | [diff] [blame^] | 226 | if (nFoundNOptionsCnt == m_nExpectingNOptions) |
| 227 | return MIstatus::success; |
| 228 | } |
| 229 | |
| 230 | // Next |
| 231 | ++it; |
| 232 | } |
| 233 | if (nFoundNOptionsCnt != m_nExpectingNOptions) |
| 234 | return MIstatus::failure; |
| 235 | |
| 236 | return MIstatus::success; |
Deepak Panickal | 6f9c468 | 2014-05-16 10:51:01 +0000 | [diff] [blame] | 237 | } |
| 238 | |
Kate Stone | b9c1b51 | 2016-09-06 20:57:50 +0000 | [diff] [blame^] | 239 | //++ |
| 240 | //------------------------------------------------------------------------------------ |
| 241 | // Details: Examine the string and determine if it is a valid long type option |
| 242 | // argument. |
Zachary Turner | 1d6af02 | 2014-11-17 18:06:21 +0000 | [diff] [blame] | 243 | // Long type argument looks like --someLongOption. |
| 244 | // Type: Method. |
| 245 | // Args: vrTxt - (R) Some text. |
| 246 | // Return: bool - True = yes valid arg, false = no. |
| 247 | // Throws: None. |
Deepak Panickal | 6f9c468 | 2014-05-16 10:51:01 +0000 | [diff] [blame] | 248 | //-- |
Kate Stone | b9c1b51 | 2016-09-06 20:57:50 +0000 | [diff] [blame^] | 249 | bool CMICmdArgValOptionLong::IsArgLongOption(const CMIUtilString &vrTxt) const { |
| 250 | const bool bHavePosSlash = (vrTxt.find('/') != std::string::npos); |
| 251 | const bool bHaveBckSlash = (vrTxt.find('\\') != std::string::npos); |
| 252 | if (bHavePosSlash || bHaveBckSlash) |
| 253 | return false; |
Deepak Panickal | 6f9c468 | 2014-05-16 10:51:01 +0000 | [diff] [blame] | 254 | |
Kate Stone | b9c1b51 | 2016-09-06 20:57:50 +0000 | [diff] [blame^] | 255 | const size_t nPos = vrTxt.find("--"); |
| 256 | if (nPos != 0) |
| 257 | return false; |
Deepak Panickal | 6f9c468 | 2014-05-16 10:51:01 +0000 | [diff] [blame] | 258 | |
Kate Stone | b9c1b51 | 2016-09-06 20:57:50 +0000 | [diff] [blame^] | 259 | if (vrTxt.length() < 3) |
| 260 | return false; |
Deepak Panickal | 6f9c468 | 2014-05-16 10:51:01 +0000 | [diff] [blame] | 261 | |
Kate Stone | b9c1b51 | 2016-09-06 20:57:50 +0000 | [diff] [blame^] | 262 | const CMIUtilString strArg = vrTxt.substr(2); |
| 263 | if (strArg.IsNumber()) |
| 264 | return false; |
Zachary Turner | 1d6af02 | 2014-11-17 18:06:21 +0000 | [diff] [blame] | 265 | |
Kate Stone | b9c1b51 | 2016-09-06 20:57:50 +0000 | [diff] [blame^] | 266 | return true; |
Deepak Panickal | 6f9c468 | 2014-05-16 10:51:01 +0000 | [diff] [blame] | 267 | } |
| 268 | |
Kate Stone | b9c1b51 | 2016-09-06 20:57:50 +0000 | [diff] [blame^] | 269 | //++ |
| 270 | //------------------------------------------------------------------------------------ |
| 271 | // Details: Examine the string and determine if it is a valid long type option |
| 272 | // argument. |
Zachary Turner | 1d6af02 | 2014-11-17 18:06:21 +0000 | [diff] [blame] | 273 | // Long type argument looks like --someLongOption. |
| 274 | // Type: Overideable. |
| 275 | // Args: vrTxt - (R) Some text. |
| 276 | // Return: bool - True = yes valid arg, false = no. |
| 277 | // Throws: None. |
Deepak Panickal | 6f9c468 | 2014-05-16 10:51:01 +0000 | [diff] [blame] | 278 | //-- |
Kate Stone | b9c1b51 | 2016-09-06 20:57:50 +0000 | [diff] [blame^] | 279 | bool CMICmdArgValOptionLong::IsArgOptionCorrect( |
| 280 | const CMIUtilString &vrTxt) const { |
| 281 | return IsArgLongOption(vrTxt); |
Deepak Panickal | 6f9c468 | 2014-05-16 10:51:01 +0000 | [diff] [blame] | 282 | } |
| 283 | |
Kate Stone | b9c1b51 | 2016-09-06 20:57:50 +0000 | [diff] [blame^] | 284 | //++ |
| 285 | //------------------------------------------------------------------------------------ |
| 286 | // Details: Does the argument name of the argument being parsed ATM match the |
| 287 | // name of |
Zachary Turner | 1d6af02 | 2014-11-17 18:06:21 +0000 | [diff] [blame] | 288 | // *this argument object. |
| 289 | // Type: Method. |
| 290 | // Args: vrTxt - (R) Some text. |
| 291 | // Return: bool - True = yes arg name matched, false = no. |
| 292 | // Throws: None. |
Deepak Panickal | 6f9c468 | 2014-05-16 10:51:01 +0000 | [diff] [blame] | 293 | //-- |
Kate Stone | b9c1b51 | 2016-09-06 20:57:50 +0000 | [diff] [blame^] | 294 | bool CMICmdArgValOptionLong::ArgNameMatch(const CMIUtilString &vrTxt) const { |
| 295 | const CMIUtilString strArg = vrTxt.substr(2); |
| 296 | return (strArg == GetName()); |
Deepak Panickal | 6f9c468 | 2014-05-16 10:51:01 +0000 | [diff] [blame] | 297 | } |
| 298 | |
Kate Stone | b9c1b51 | 2016-09-06 20:57:50 +0000 | [diff] [blame^] | 299 | //++ |
| 300 | //------------------------------------------------------------------------------------ |
| 301 | // Details: Retrieve the list of CMICmdArgValBase derived option objects found |
| 302 | // following |
| 303 | // *this long option argument. For example "list-thread-groups [ |
| 304 | // --recurse 1 ]" |
Zachary Turner | 1d6af02 | 2014-11-17 18:06:21 +0000 | [diff] [blame] | 305 | // where 1 is the list of expected option to follow. |
| 306 | // Type: Method. |
| 307 | // Args: None. |
| 308 | // Return: CMICmdArgValListBase::VecArgObjPtr_t & - List of options. |
| 309 | // Throws: None. |
Deepak Panickal | 6f9c468 | 2014-05-16 10:51:01 +0000 | [diff] [blame] | 310 | //-- |
Zachary Turner | 1d6af02 | 2014-11-17 18:06:21 +0000 | [diff] [blame] | 311 | const CMICmdArgValListBase::VecArgObjPtr_t & |
Kate Stone | b9c1b51 | 2016-09-06 20:57:50 +0000 | [diff] [blame^] | 312 | CMICmdArgValOptionLong::GetExpectedOptions() const { |
| 313 | return m_vecArgsExpected; |
Deepak Panickal | 6f9c468 | 2014-05-16 10:51:01 +0000 | [diff] [blame] | 314 | } |