Looks fine. One question:

In the definition of the OptionValidator:

    struct OptionValidator
    {
        virtual ~OptionValidator() { }
        virtual bool IsValid() const = 0;
        virtual const char * ValidConditionString() const = 0;
    };

Should the IsValid() and ValidConditionString() condition string take a 
"CommandInterpreter &command_interpreter" as an argument? This would allow us 
to get to the current execution contents (selected 
target/process/thread/frame), mainly so we can get the lldb_private::Target so 
we can get the platform from it so we can correctly make the determination if 
the option should be valid or not for the current context.

Greg

> On Jul 3, 2014, at 12:33 AM, Zachary Turner <[email protected]> wrote:
> 
> This patch adds the notion of an OptionValidator to the OptionDefinition.  
> The purpose of the OptionValidator is to determine, based on some arbitrary 
> set of conditions, whether or not a command option is valid for a given 
> debugger state.  An example of this might be to selectively disable or enable 
> certain command options that don't apply to a particular platform.
> 
> This patch contains no functional change, and does not actually make use of 
> an OptionValidator for any purpose yet.  It involves alot of code churn, 
> however, so is submitted independently so as not to muddy up the subsequent 
> change which actually begins making use of the validator.
> 
> http://reviews.llvm.org/D4369
> 
> Files:
>  include/lldb/lldb-private-types.h
>  source/Commands/CommandObjectArgs.cpp
>  source/Commands/CommandObjectBreakpoint.cpp
>  source/Commands/CommandObjectBreakpointCommand.cpp
>  source/Commands/CommandObjectCommands.cpp
>  source/Commands/CommandObjectDisassemble.cpp
>  source/Commands/CommandObjectExpression.cpp
>  source/Commands/CommandObjectFrame.cpp
>  source/Commands/CommandObjectHelp.cpp
>  source/Commands/CommandObjectLog.cpp
>  source/Commands/CommandObjectMemory.cpp
>  source/Commands/CommandObjectPlatform.cpp
>  source/Commands/CommandObjectProcess.cpp
>  source/Commands/CommandObjectRegister.cpp
>  source/Commands/CommandObjectSettings.cpp
>  source/Commands/CommandObjectSource.cpp
>  source/Commands/CommandObjectTarget.cpp
>  source/Commands/CommandObjectThread.cpp
>  source/Commands/CommandObjectType.cpp
>  source/Commands/CommandObjectWatchpoint.cpp
>  source/Commands/CommandObjectWatchpointCommand.cpp
>  source/Interpreter/OptionGroupArchitecture.cpp
>  source/Interpreter/OptionGroupFormat.cpp
>  source/Interpreter/OptionGroupOutputFile.cpp
>  source/Interpreter/OptionGroupPlatform.cpp
>  source/Interpreter/OptionGroupUUID.cpp
>  source/Interpreter/OptionGroupValueObjectDisplay.cpp
>  source/Interpreter/OptionGroupVariable.cpp
>  source/Interpreter/OptionGroupWatchpoint.cpp
>  source/Interpreter/Options.cpp
>  source/Target/Platform.cpp
>  source/Target/Process.cpp
> <D4369.11043.patch>_______________________________________________
> lldb-commits mailing list
> [email protected]
> http://lists.cs.uiuc.edu/mailman/listinfo/lldb-commits

_______________________________________________
lldb-commits mailing list
[email protected]
http://lists.cs.uiuc.edu/mailman/listinfo/lldb-commits

Reply via email to