]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - tools/lldb-mi/MICmdArgValConsume.cpp
Vendor import of lldb trunk r290819:
[FreeBSD/FreeBSD.git] / tools / lldb-mi / MICmdArgValConsume.cpp
1 //===-- MICmdArgValConsume.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
10 // In-house headers:
11 #include "MICmdArgValConsume.h"
12 #include "MICmdArgContext.h"
13
14 //++
15 //------------------------------------------------------------------------------------
16 // Details: CMICmdArgValConsume constructor.
17 // Type:    Method.
18 // Args:    None.
19 // Return:  None.
20 // Throws:  None.
21 //--
22 CMICmdArgValConsume::CMICmdArgValConsume() {}
23
24 //++
25 //------------------------------------------------------------------------------------
26 // Details: CMICmdArgValConsume constructor.
27 // Type:    Method.
28 // Args:    vrArgName       - (R) Argument's name to search by.
29 //          vbMandatory     - (R) True = Yes must be present, false = optional
30 //          argument.
31 // Return:  None.
32 // Throws:  None.
33 //--
34 CMICmdArgValConsume::CMICmdArgValConsume(const CMIUtilString &vrArgName,
35                                          const bool vbMandatory)
36     : CMICmdArgValBaseTemplate(vrArgName, vbMandatory, true) {}
37
38 //++
39 //------------------------------------------------------------------------------------
40 // Details: CMICmdArgValConsume destructor.
41 // Type:    Overidden.
42 // Args:    None.
43 // Return:  None.
44 // Throws:  None.
45 //--
46 CMICmdArgValConsume::~CMICmdArgValConsume() {}
47
48 //++
49 //------------------------------------------------------------------------------------
50 // Details: Parse the command's argument options string and try to extract the
51 // value *this
52 //          argument is looking for.
53 // Type:    Overridden.
54 // Args:    vwArgContext    - (R) The command's argument options string.
55 // Return:  MIstatus::success - Functional succeeded.
56 //          MIstatus::failure - Functional failed.
57 // Throws:  None.
58 //--
59 bool CMICmdArgValConsume::Validate(CMICmdArgContext &vwArgContext) {
60   if (vwArgContext.IsEmpty())
61     return m_bMandatory ? MIstatus::failure : MIstatus::success;
62
63   // Consume the optional file, line, linenum arguments till the mode '--'
64   // argument
65   const CMIUtilString::VecString_t vecOptions(vwArgContext.GetArgs());
66   CMIUtilString::VecString_t::const_iterator it = vecOptions.begin();
67   while (it != vecOptions.end()) {
68     const CMIUtilString &rTxt(*it);
69
70     if (rTxt.compare("--") == 0) {
71       m_bFound = true;
72       m_bValid = true;
73       if (!vwArgContext.RemoveArg(rTxt))
74         return MIstatus::failure;
75       return MIstatus::success;
76     }
77     // Next
78     ++it;
79   }
80
81   return MIstatus::failure;
82 }
83
84 //++
85 //------------------------------------------------------------------------------------
86 // Details: Nothing to examine as we just want to consume the argument or option
87 // (ignore
88 //          it).
89 // Type:    Method.
90 // Args:    None.
91 // Return:  bool -  True = yes ok, false = not ok.
92 // Throws:  None.
93 //--
94 bool CMICmdArgValConsume::IsOk() const { return true; }