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