]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - contrib/llvm/tools/lldb/tools/lldb-mi/MICmdArgValConsume.cpp
Merge bmake-20150505 improve detection of malformed conditionals.
[FreeBSD/FreeBSD.git] / contrib / llvm / tools / lldb / 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 //++
11 // File:        MICmdArgValConsume.cpp
12 //
13 // Overview:    CMICmdArgValConsume implementation.
14 //
15 // Environment: Compilers:  Visual C++ 12.
16 //                          gcc (Ubuntu/Linaro 4.8.1-10ubuntu9) 4.8.1
17 //              Libraries:  See MIReadmetxt.
18 //
19 // Copyright:   None.
20 //--
21
22 // In-house headers:
23 #include "MICmdArgValConsume.h"
24 #include "MICmdArgContext.h"
25
26 //++ ------------------------------------------------------------------------------------
27 // Details: CMICmdArgValConsume constructor.
28 // Type:    Method.
29 // Args:    None.
30 // Return:  None.
31 // Throws:  None.
32 //--
33 CMICmdArgValConsume::CMICmdArgValConsume(void)
34 {
35 }
36
37 //++ ------------------------------------------------------------------------------------
38 // Details: CMICmdArgValConsume constructor.
39 // Type:    Method.
40 // Args:    vrArgName       - (R) Argument's name to search by.
41 //          vbMandatory     - (R) True = Yes must be present, false = optional argument.
42 // Return:  None.
43 // Throws:  None.
44 //--
45 CMICmdArgValConsume::CMICmdArgValConsume(const CMIUtilString &vrArgName, const bool vbMandatory)
46     : CMICmdArgValBaseTemplate(vrArgName, vbMandatory, true)
47 {
48 }
49
50 //++ ------------------------------------------------------------------------------------
51 // Details: CMICmdArgValConsume destructor.
52 // Type:    Overidden.
53 // Args:    None.
54 // Return:  None.
55 // Throws:  None.
56 //--
57 CMICmdArgValConsume::~CMICmdArgValConsume(void)
58 {
59 }
60
61 //++ ------------------------------------------------------------------------------------
62 // Details: Parse the command's argument options string and try to extract the value *this
63 //          argument is looking for.
64 // Type:    Overridden.
65 // Args:    vwArgContext    - (R) The command's argument options string.
66 // Return:  MIstatus::success - Functional succeeded.
67 //          MIstatus::failure - Functional failed.
68 // Throws:  None.
69 //--
70 bool
71 CMICmdArgValConsume::Validate(CMICmdArgContext &vwArgContext)
72 {
73     if (vwArgContext.IsEmpty())
74         return MIstatus::success;
75
76     if (vwArgContext.GetNumberArgsPresent() == 1)
77     {
78         const CMIUtilString &rArg(vwArgContext.GetArgsLeftToParse());
79         m_bFound = true;
80         m_bValid = true;
81         vwArgContext.RemoveArg(rArg);
82         return MIstatus::success;
83     }
84
85     // In reality there are more than one option,  if so the file option
86     // is the last one (don't handle that here - find the best looking one)
87     const CMIUtilString::VecString_t vecOptions(vwArgContext.GetArgs());
88     CMIUtilString::VecString_t::const_iterator it = vecOptions.begin();
89     while (it != vecOptions.end())
90     {
91         const CMIUtilString &rTxt(*it);
92         m_bFound = true;
93
94         if (vwArgContext.RemoveArg(rTxt))
95         {
96             m_bValid = true;
97             return MIstatus::success;
98         }
99         else
100             return MIstatus::success;
101
102         // Next
103         ++it;
104     }
105
106     return MIstatus::failure;
107 }
108
109 //++ ------------------------------------------------------------------------------------
110 // Details: Nothing to examine as we just want to consume the argument or option (ignore
111 //          it).
112 // Type:    Method.
113 // Args:    None.
114 // Return:  bool -  True = yes ok, false = not ok.
115 // Throws:  None.
116 //--
117 bool
118 CMICmdArgValConsume::IsOk(void) const
119 {
120     return true;
121 }