1 //===-- MICmdArgValListBase.cpp ---------------------------------*- C++ -*-===//
3 // The LLVM Compiler Infrastructure
5 // This file is distributed under the University of Illinois Open Source
6 // License. See LICENSE.TXT for details.
8 //===----------------------------------------------------------------------===//
11 #include "MICmdArgValListBase.h"
12 #include "MICmdArgContext.h"
13 #include "MICmdArgValConsume.h"
14 #include "MICmdArgValFile.h"
15 #include "MICmdArgValNumber.h"
16 #include "MICmdArgValOptionLong.h"
17 #include "MICmdArgValOptionShort.h"
18 #include "MICmdArgValString.h"
19 #include "MICmdArgValThreadGrp.h"
22 //------------------------------------------------------------------------------------
23 // Details: CMICmdArgValListBase constructor.
29 CMICmdArgValListBase::CMICmdArgValListBase()
30 : m_eArgType(eArgValType_invalid) {}
33 //------------------------------------------------------------------------------------
34 // Details: CMICmdArgValListBase constructor.
36 // Args: vrArgName - (R) Argument's name to search by.
37 // vbMandatory - (R) True = Yes must be present, false = optional
39 // vbHandleByCmd - (R) True = Command processes *this option, false =
44 CMICmdArgValListBase::CMICmdArgValListBase(const CMIUtilString &vrArgName,
45 const bool vbMandatory,
46 const bool vbHandleByCmd)
47 : CMICmdArgValBaseTemplate(vrArgName, vbMandatory, vbHandleByCmd),
48 m_eArgType(eArgValType_invalid) {}
51 //------------------------------------------------------------------------------------
52 // Details: CMICmdArgValListBase constructor.
54 // Args: vrArgName - (R) Argument's name to search by.
55 // vbMandatory - (R) True = Yes must be present, false = optional
57 // vbHandleByCmd - (R) True = Command processes *this option, false =
59 // veType - (R) The type of argument to look for and create
60 // argument object of a certain type.
64 CMICmdArgValListBase::CMICmdArgValListBase(const CMIUtilString &vrArgName,
65 const bool vbMandatory,
66 const bool vbHandleByCmd,
67 const ArgValType_e veType)
68 : CMICmdArgValBaseTemplate(vrArgName, vbMandatory, vbHandleByCmd),
72 //------------------------------------------------------------------------------------
73 // Details: CMICmdArgValListBase destructor.
79 CMICmdArgValListBase::~CMICmdArgValListBase() {
85 //------------------------------------------------------------------------------------
86 // Details: Tear down resources used by *this object.
92 void CMICmdArgValListBase::Destroy() {
94 VecArgObjPtr_t::const_iterator it = m_argValue.begin();
95 while (it != m_argValue.end()) {
96 CMICmdArgValBase *pArgObj = *it;
106 //------------------------------------------------------------------------------------
107 // Details: Create an CMICmdArgValBase derived object matching the type
109 // and put the option or argument's value inside it.
111 // Args: vrTxt - (R) Text version the option or argument.
112 // veType - (R) The type of argument or option object to create.
113 // Return: CMICmdArgValBase * - Option object holding the value.
114 // - NULL = Functional failed.
118 CMICmdArgValListBase::CreationObj(const CMIUtilString &vrTxt,
119 const ArgValType_e veType) const {
120 CMICmdArgValBase *pOptionObj = nullptr;
122 case eArgValType_File:
123 pOptionObj = new CMICmdArgValFile();
125 case eArgValType_Consume:
126 pOptionObj = new CMICmdArgValConsume();
128 case eArgValType_Number:
129 pOptionObj = new CMICmdArgValNumber();
131 case eArgValType_OptionLong:
132 pOptionObj = new CMICmdArgValOptionLong();
134 case eArgValType_OptionShort:
135 pOptionObj = new CMICmdArgValOptionShort();
137 case eArgValType_String:
138 pOptionObj = new CMICmdArgValString();
140 case eArgValType_StringQuoted:
141 pOptionObj = new CMICmdArgValString(true, false, false);
143 case eArgValType_StringQuotedNumber:
144 pOptionObj = new CMICmdArgValString(true, true, false);
146 case eArgValType_StringQuotedNumberPath:
147 pOptionObj = new CMICmdArgValString(true, true, true);
149 case eArgValType_StringAnything:
150 pOptionObj = new CMICmdArgValString(true);
152 case eArgValType_ThreadGrp:
153 pOptionObj = new CMICmdArgValThreadGrp();
159 CMICmdArgContext argCntxt(vrTxt);
160 if (!pOptionObj->Validate(argCntxt))
167 //------------------------------------------------------------------------------------
168 // Details: Validate the option or argument is the correct type.
170 // Args: vrTxt - (R) Text version the option or argument.
171 // veType - (R) The type of value to expect.
172 // Return: bool - True = Yes expected type present, False = no.
175 bool CMICmdArgValListBase::IsExpectedCorrectType(
176 const CMIUtilString &vrTxt, const ArgValType_e veType) const {
179 case eArgValType_File:
180 bValid = CMICmdArgValFile().IsFilePath(vrTxt);
182 case eArgValType_Consume:
183 bValid = CMICmdArgValConsume().IsOk();
185 case eArgValType_Number:
186 bValid = CMICmdArgValNumber().IsArgNumber(vrTxt);
188 case eArgValType_OptionLong:
189 bValid = CMICmdArgValOptionLong().IsArgLongOption(vrTxt);
191 case eArgValType_OptionShort:
192 bValid = CMICmdArgValOptionShort().IsArgShortOption(vrTxt);
194 case eArgValType_String:
195 bValid = CMICmdArgValString().IsStringArg(vrTxt);
197 case eArgValType_StringQuoted:
198 bValid = CMICmdArgValString(true, false, false).IsStringArg(vrTxt);
200 case eArgValType_StringQuotedNumber:
201 bValid = CMICmdArgValString(true, true, false).IsStringArg(vrTxt);
203 case eArgValType_StringQuotedNumberPath:
204 bValid = CMICmdArgValString(true, true, true).IsStringArg(vrTxt);
206 case eArgValType_StringAnything:
207 bValid = CMICmdArgValString(true).IsStringArg(vrTxt);
209 case eArgValType_ThreadGrp:
210 bValid = CMICmdArgValThreadGrp().IsArgThreadGrp(vrTxt);