1 //===-- CommandObjectBreakpointCommand.h ------------------------*- 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 #ifndef liblldb_CommandObjectBreakpointCommand_h_ 11 #define liblldb_CommandObjectBreakpointCommand_h_ 12 13 // C Includes 14 // C++ Includes 15 16 17 // Other libraries and framework includes 18 // Project includes 19 20 #include "lldb/lldb-types.h" 21 #include "lldb/Interpreter/Options.h" 22 #include "lldb/Core/InputReader.h" 23 #include "lldb/Interpreter/CommandObject.h" 24 #include "lldb/Interpreter/CommandReturnObject.h" 25 #include "lldb/Interpreter/CommandObjectMultiword.h" 26 27 28 namespace lldb_private { 29 30 //------------------------------------------------------------------------- 31 // CommandObjectMultiwordBreakpoint 32 //------------------------------------------------------------------------- 33 34 class CommandObjectBreakpointCommand : public CommandObjectMultiword 35 { 36 public: 37 CommandObjectBreakpointCommand (CommandInterpreter &interpreter); 38 39 virtual 40 ~CommandObjectBreakpointCommand (); 41 42 43 static bool 44 BreakpointOptionsCallbackFunction (void *baton, 45 StoppointCallbackContext *context, 46 lldb::user_id_t break_id, 47 lldb::user_id_t break_loc_id); 48 }; 49 50 //------------------------------------------------------------------------- 51 // CommandObjectBreakpointCommandAdd 52 //------------------------------------------------------------------------- 53 54 55 class CommandObjectBreakpointCommandAdd : public CommandObject 56 { 57 public: 58 59 CommandObjectBreakpointCommandAdd (); 60 61 virtual 62 ~CommandObjectBreakpointCommandAdd (); 63 64 virtual bool 65 Execute (CommandInterpreter &interpreter, 66 Args& command, 67 CommandReturnObject &result); 68 69 virtual Options * 70 GetOptions (); 71 72 void 73 CollectDataForBreakpointCommandCallback (CommandInterpreter &interpreter, 74 BreakpointOptions *bp_options, 75 CommandReturnObject &result); 76 77 /// Set a one-liner as the callback for the breakpoint. 78 void 79 SetBreakpointCommandCallback (CommandInterpreter &interpreter, 80 BreakpointOptions *bp_options, 81 const char *oneliner); 82 83 static size_t 84 GenerateBreakpointCommandCallback (void *baton, 85 InputReader &reader, 86 lldb::InputReaderAction notification, 87 const char *bytes, 88 size_t bytes_len); 89 90 static bool 91 BreakpointOptionsCallbackFunction (void *baton, 92 StoppointCallbackContext *context, 93 lldb::user_id_t break_id, 94 lldb::user_id_t break_loc_id); 95 96 97 class CommandOptions : public Options 98 { 99 public: 100 101 CommandOptions (); 102 103 virtual 104 ~CommandOptions (); 105 106 virtual Error 107 SetOptionValue (int option_idx, const char *option_arg); 108 109 void 110 ResetOptionValues (); 111 112 const lldb::OptionDefinition* 113 GetDefinitions (); 114 115 // Options table: Required for subclasses of Options. 116 117 static lldb::OptionDefinition g_option_table[]; 118 119 // Instance variables to hold the values for command options. 120 121 bool m_use_commands; 122 bool m_use_script_language; 123 lldb::ScriptLanguage m_script_language; 124 125 // Instance variables to hold the values for one_liner options. 126 bool m_use_one_liner; 127 std::string m_one_liner; 128 }; 129 130 private: 131 CommandOptions m_options; 132 }; 133 134 //------------------------------------------------------------------------- 135 // CommandObjectBreakpointCommandRemove 136 //------------------------------------------------------------------------- 137 138 class CommandObjectBreakpointCommandRemove : public CommandObject 139 { 140 public: 141 CommandObjectBreakpointCommandRemove (); 142 143 virtual 144 ~CommandObjectBreakpointCommandRemove (); 145 146 virtual bool 147 Execute (CommandInterpreter &interpreter, 148 Args& command, 149 CommandReturnObject &result); 150 151 private: 152 }; 153 154 //------------------------------------------------------------------------- 155 // CommandObjectBreakpointCommandList 156 //------------------------------------------------------------------------- 157 158 class CommandObjectBreakpointCommandList : public CommandObject 159 { 160 public: 161 CommandObjectBreakpointCommandList (); 162 163 virtual 164 ~CommandObjectBreakpointCommandList (); 165 166 virtual bool 167 Execute (CommandInterpreter &interpreter, 168 Args& command, 169 CommandReturnObject &result); 170 171 private: 172 }; 173 174 175 } // namespace lldb_private 176 177 #endif // liblldb_CommandObjectBreakpointCommand_h_ 178