File: Driver.h

package info (click to toggle)
llvm-toolchain-3.5 1%3A3.5-10
  • links: PTS, VCS
  • area: main
  • in suites: jessie, jessie-kfreebsd
  • size: 282,028 kB
  • ctags: 310,872
  • sloc: cpp: 1,883,926; ansic: 310,731; objc: 86,612; python: 79,565; asm: 65,844; sh: 9,829; makefile: 6,057; perl: 5,589; ml: 5,254; pascal: 3,285; lisp: 1,640; xml: 686; cs: 239; csh: 117
file content (163 lines) | stat: -rw-r--r-- 4,165 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
//===-- Driver.h ------------------------------------------------*- C++ -*-===//
//
//                     The LLVM Compiler Infrastructure
//
// This file is distributed under the University of Illinois Open Source
// License. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//

// In-house headers:
#include "MICmnConfig.h"
#if MICONFIG_COMPILE_MIDRIVER_WITH_LLDBDRIVER

#ifndef lldb_Driver_h_
#define lldb_Driver_h_

//#include "Platform.h" // IOR removed
#include <lldb/Utility/PseudoTerminal.h>

#include <set>
#include <bitset>
#include <string>
#include <vector>

#include <lldb/API/SBDefines.h>
#include <lldb/API/SBBroadcaster.h>
#include <lldb/API/SBDebugger.h>
#include <lldb/API/SBError.h>
#include "MIDriverMgr.h"
#include "MIDriverBase.h"

#define ASYNC true
#define NO_ASYNC false

class IOChannel;

class Driver : public lldb::SBBroadcaster, public CMIDriverBase, public CMIDriverMgr::IDriver
{
// MI required code:
// Static:
public:
	static Driver *	CreateSelf( void );

// Methods:
public:
	bool	MISetup( CMIUtilString & vwErrMsg );

// Overridden:
public:
	// From CMIDriverMgr::IDriver
	virtual bool					DoInitialize( void );
	virtual bool					DoShutdown( void );
	virtual bool					DoMainLoop( void );
	virtual void					DoResizeWindow( const uint32_t vWindowSizeWsCol );
	virtual lldb::SBError			DoParseArgs( const int argc, const char * argv[], FILE * vpStdOut, bool & vwbExiting );
	virtual CMIUtilString 			GetError( void ) const;
	virtual const CMIUtilString & 	GetName( void ) const;
	virtual lldb::SBDebugger &		GetTheDebugger( void );	
	virtual bool					GetDriverIsGDBMICompatibleDriver( void ) const;
	virtual bool					SetId( const CMIUtilString & vID );
	virtual const CMIUtilString &	GetId( void ) const;
	// From CMIDriverBase
	virtual bool					DoFallThruToAnotherDriver( const CMIUtilString & vCmd, CMIUtilString & vwErrMsg );
	virtual bool					SetDriverParent( const CMIDriverBase & vrOtherDriver );
	virtual const CMIUtilString &	GetDriverName( void ) const;
	virtual const CMIUtilString &	GetDriverId( void ) const;

// Original code:
public:
    Driver ();

    virtual
    ~Driver ();

    void
    MainLoop ();

    lldb::SBError
    ParseArgs (int argc, const char *argv[], FILE *out_fh, bool &do_exit);

    const char *
    GetFilename() const;

    const char *
    GetCrashLogFilename() const;

    const char *
    GetArchName() const;

    lldb::ScriptLanguage
    GetScriptLanguage() const;

    void
    ExecuteInitialCommands (bool before_file);
    
    bool
    GetDebugMode() const;

    class OptionData
    {
    public:
        OptionData ();
       ~OptionData ();

        void
        Clear();

        void
        AddInitialCommand (const char *command, bool before_file, bool is_file, lldb::SBError &error);
    
        //static OptionDefinition m_cmd_option_table[];

        std::vector<std::string> m_args;
        lldb::ScriptLanguage m_script_lang;
        std::string m_core_file;
        std::string m_crash_log;
        std::vector<std::pair<bool,std::string> > m_initial_commands;
        std::vector<std::pair<bool,std::string> > m_after_file_commands;
        bool m_debug_mode;
        bool m_source_quietly;
        bool m_print_version;
        bool m_print_python_path;
        bool m_print_help;
        bool m_wait_for;
        std::string m_process_name;
        lldb::pid_t m_process_pid;
        bool m_use_external_editor;  // FIXME: When we have set/show variables we can remove this from here.
        typedef std::set<char> OptionSet;
        OptionSet m_seen_options;
    };


    static lldb::SBError
    SetOptionValue (int option_idx,
                    const char *option_arg,
                    Driver::OptionData &data);


    lldb::SBDebugger &
    GetDebugger()
    {
        return m_debugger;
    }
    
    void
    ResizeWindow (unsigned short col);

private:
    lldb::SBDebugger m_debugger;
    OptionData m_option_data;

    void
    ResetOptionValues ();

    void
    ReadyForCommand ();
};

extern Driver * g_driver;

#endif // lldb_Driver_h_

#endif // MICONFIG_COMPILE_MIDRIVER_WITH_LLDBDRIVER