A little refactoring of the way to add break IDs or ID ranges as command argument data

to the command argument entry.  Add a static helper function:

    CommandObject::AddIDsArgumentData(CommandArgumentEntry &arg)

to be used from CommandObjectBreakpoint.cpp.  The helper function could also be useful
for commands in the future to manipulate watchpoints.

llvm-svn: 140221
This commit is contained in:
Johnny Chen 2011-09-21 01:00:02 +00:00
parent f16d2447e1
commit 184d7a727e
3 changed files with 30 additions and 64 deletions

View File

@ -361,6 +361,12 @@ protected:
bool m_is_alias;
Flags m_flags;
std::vector<CommandArgumentEntry> m_arguments;
// Helper function to populate IDs or ID ranges as the command argument data
// to the specified command argument entry.
static void
AddIDsArgumentData(CommandArgumentEntry &arg);
};
} // namespace lldb_private

View File

@ -826,22 +826,7 @@ CommandObjectBreakpointEnable::CommandObjectBreakpointEnable (CommandInterpreter
NULL)
{
CommandArgumentEntry arg;
CommandArgumentData bp_id_arg;
CommandArgumentData bp_id_range_arg;
// Create the first variant for the first (and only) argument for this command.
bp_id_arg.arg_type = eArgTypeBreakpointID;
bp_id_arg.arg_repetition = eArgRepeatOptional;
// Create the second variant for the first (and only) argument for this command.
bp_id_range_arg.arg_type = eArgTypeBreakpointIDRange;
bp_id_range_arg.arg_repetition = eArgRepeatOptional;
// The first (and only) argument for this command could be either a bp_id or a bp_id_range.
// Push both variants into the entry for the first argument for this command.
arg.push_back (bp_id_arg);
arg.push_back (bp_id_range_arg);
CommandObject::AddIDsArgumentData(arg);
// Add the entry for the first argument for this command to the object's arguments vector.
m_arguments.push_back (arg);
}
@ -942,22 +927,7 @@ CommandObjectBreakpointDisable::CommandObjectBreakpointDisable (CommandInterpret
NULL)
{
CommandArgumentEntry arg;
CommandArgumentData bp_id_arg;
CommandArgumentData bp_id_range_arg;
// Create the first variant for the first (and only) argument for this command.
bp_id_arg.arg_type = eArgTypeBreakpointID;
bp_id_arg.arg_repetition = eArgRepeatOptional;
// Create the second variant for the first (and only) argument for this command.
bp_id_range_arg.arg_type = eArgTypeBreakpointIDRange;
bp_id_range_arg.arg_repetition = eArgRepeatOptional;
// The first (and only) argument for this command could be either a bp_id or a bp_id_range.
// Push both variants into the entry for the first argument for this command.
arg.push_back (bp_id_arg);
arg.push_back (bp_id_range_arg);
CommandObject::AddIDsArgumentData(arg);
// Add the entry for the first argument for this command to the object's arguments vector.
m_arguments.push_back (arg);
}
@ -1238,22 +1208,7 @@ CommandObjectBreakpointDelete::CommandObjectBreakpointDelete(CommandInterpreter
NULL)
{
CommandArgumentEntry arg;
CommandArgumentData bp_id_arg;
CommandArgumentData bp_id_range_arg;
// Create the first variant for the first (and only) argument for this command.
bp_id_arg.arg_type = eArgTypeBreakpointID;
bp_id_arg.arg_repetition = eArgRepeatOptional;
// Create the second variant for the first (and only) argument for this command.
bp_id_range_arg.arg_type = eArgTypeBreakpointIDRange;
bp_id_range_arg.arg_repetition = eArgRepeatOptional;
// The first (and only) argument for this command could be either a bp_id or a bp_id_range.
// Push both variants into the entry for the first argument for this command.
arg.push_back (bp_id_arg);
arg.push_back (bp_id_range_arg);
CommandObject::AddIDsArgumentData(arg);
// Add the entry for the first argument for this command to the object's arguments vector.
m_arguments.push_back (arg);
}
@ -1513,22 +1468,7 @@ CommandObjectBreakpointModify::CommandObjectBreakpointModify (CommandInterpreter
m_options (interpreter)
{
CommandArgumentEntry arg;
CommandArgumentData bp_id_arg;
CommandArgumentData bp_id_range_arg;
// Create the first variant for the first (and only) argument for this command.
bp_id_arg.arg_type = eArgTypeBreakpointID;
bp_id_arg.arg_repetition = eArgRepeatPlain;
// Create the second variant for the first (and only) argument for this command.
bp_id_range_arg.arg_type = eArgTypeBreakpointIDRange;
bp_id_range_arg.arg_repetition = eArgRepeatPlain;
// The first (and only) argument for this command could be either a bp_id or a bp_id_range.
// Push both variants into the entry for the first argument for this command.
arg.push_back (bp_id_arg);
arg.push_back (bp_id_range_arg);
CommandObject::AddIDsArgumentData(arg);
// Add the entry for the first argument for this command to the object's arguments vector.
m_arguments.push_back (arg);
}

View File

@ -743,6 +743,26 @@ ExprPathHelpTextCallback()
" meaning of array slicing (taking elements n thru m inside the array or pointed-to memory).";
}
void
CommandObject::AddIDsArgumentData(CommandArgumentEntry &arg)
{
CommandArgumentData id_arg;
CommandArgumentData id_range_arg;
// Create the first variant for the first (and only) argument for this command.
id_arg.arg_type = eArgTypeBreakpointID;
id_arg.arg_repetition = eArgRepeatOptional;
// Create the second variant for the first (and only) argument for this command.
id_range_arg.arg_type = eArgTypeBreakpointIDRange;
id_range_arg.arg_repetition = eArgRepeatOptional;
// The first (and only) argument for this command could be either a id or a id_range.
// Push both variants into the entry for the first argument for this command.
arg.push_back(id_arg);
arg.push_back(id_range_arg);
}
const char *
CommandObject::GetArgumentTypeAsCString (const lldb::CommandArgumentType arg_type)
{