]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - contrib/llvm/tools/lldb/tools/lldb-mi/MICmdArgValConsume.cpp
Merge ^/head r274961 through r275261.
[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 CMICmdArgValConsume::Validate( CMICmdArgContext & vwArgContext )
71 {
72         if( vwArgContext.IsEmpty() )
73                 return MIstatus::success;
74
75         if( vwArgContext.GetNumberArgsPresent() == 1 )
76         {
77                 const CMIUtilString & rArg( vwArgContext.GetArgsLeftToParse() ); 
78                 m_bFound = true;
79                 m_bValid = true;
80                 vwArgContext.RemoveArg( rArg );
81                 return MIstatus::success;
82         }
83         
84         // In reality there are more than one option,  if so the file option 
85         // is the last one (don't handle that here - find the best looking one)
86         const CMIUtilString::VecString_t vecOptions( vwArgContext.GetArgs() );
87         CMIUtilString::VecString_t::const_iterator it = vecOptions.begin();
88         while( it != vecOptions.end() )
89         {
90                 const CMIUtilString & rTxt( *it ); 
91                 m_bFound = true;
92                                 
93                 if( vwArgContext.RemoveArg( rTxt ) )
94                 {
95                         m_bValid = true;
96                         return MIstatus::success;
97                 }
98                 else
99                         return MIstatus::success;
100                 
101                 // Next
102                 ++it;
103         }
104
105         return MIstatus::failure;
106 }
107
108 //++ ------------------------------------------------------------------------------------
109 // Details:     Nothing to examine as we just want to consume the argument or option (ignore
110 //                      it).
111 // Type:        Method.
112 // Args:        None.
113 // Return:      bool -  True = yes ok, false = not ok.
114 // Throws:      None.
115 //--
116 bool CMICmdArgValConsume::IsOk( void ) const
117 {
118         return true;
119 }