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 void 78 SetBreakpointCommandCallback (CommandInterpreter &interpreter, 79 BreakpointOptions *bp_options, 80 const char *oneliner); 81 82 static size_t 83 GenerateBreakpointCommandCallback (void *baton, 84 InputReader &reader, 85 lldb::InputReaderAction notification, 86 const char *bytes, 87 size_t bytes_len); 88 89 static bool 90 BreakpointOptionsCallbackFunction (void *baton, 91 StoppointCallbackContext *context, 92 lldb::user_id_t break_id, 93 lldb::user_id_t break_loc_id); 94 95 96 class CommandOptions : public Options 97 { 98 public: 99 100 CommandOptions (); 101 102 virtual 103 ~CommandOptions (); 104 105 virtual Error 106 SetOptionValue (int option_idx, const char *option_arg); 107 108 void 109 ResetOptionValues (); 110 111 const lldb::OptionDefinition* 112 GetDefinitions (); 113 114 // Options table: Required for subclasses of Options. 115 116 static lldb::OptionDefinition g_option_table[]; 117 118 // Instance variables to hold the values for command options. 119 120 bool m_use_commands; 121 bool m_use_script_language; 122 lldb::ScriptLanguage m_script_language; 123 124 // Instance variables to hold the values for one_liner options. 125 bool m_use_one_liner; 126 std::string m_one_liner; 127 }; 128 129 private: 130 CommandOptions m_options; 131 }; 132 133 //------------------------------------------------------------------------- 134 // CommandObjectBreakpointCommandRemove 135 //------------------------------------------------------------------------- 136 137 class CommandObjectBreakpointCommandRemove : public CommandObject 138 { 139 public: 140 CommandObjectBreakpointCommandRemove (); 141 142 virtual 143 ~CommandObjectBreakpointCommandRemove (); 144 145 virtual bool 146 Execute (CommandInterpreter &interpreter, 147 Args& command, 148 CommandReturnObject &result); 149 150 private: 151 }; 152 153 //------------------------------------------------------------------------- 154 // CommandObjectBreakpointCommandList 155 //------------------------------------------------------------------------- 156 157 class CommandObjectBreakpointCommandList : public CommandObject 158 { 159 public: 160 CommandObjectBreakpointCommandList (); 161 162 virtual 163 ~CommandObjectBreakpointCommandList (); 164 165 virtual bool 166 Execute (CommandInterpreter &interpreter, 167 Args& command, 168 CommandReturnObject &result); 169 170 private: 171 }; 172 173 174 } // namespace lldb_private 175 176 #endif // liblldb_CommandObjectBreakpointCommand_h_ 177