llvm-project/lldb/source
Sean Callanan 9fda9d2177 Add PersistentVariableDelegate to handle language-specific dematerialization.
The concept here is that languages may have different ways of communicating
results.  In particular, languages may have different names for their result
variables and in fact may have multiple types of result variables (e.g.,
error results).  Materializer was tied to one specific model of result handling.

Instead, now UserExpressions can register their own handlers for the result
variables they inject.  This allows language-specific code in Materializer to
be moved into the expression parser plug-in, and it simplifies Materializer.
These delegates are subclasses of PersistentVariableDelegate.

PersistentVariableDelegate can provide the name of the result variable, and is
notified when the result variable is populated.  It can also be used to touch
persistent variables if need be, updating language-specific state.  The
UserExpression owns the delegate and can decide on its result based on
consulting all of its (potentially multiple) delegates.

The user expression itself now makes the determination of what the final result
of the expression is, rather than relying on the Materializer, and I've added a
virtual function to UserExpression to allow this.

llvm-svn: 249233
2015-10-03 09:09:01 +00:00
..
API Now persistent expression data no longer lives with the Target, but rather with 2015-09-30 19:57:57 +00:00
Breakpoint Further reduction of Clang-related header inclusion. 2015-09-21 16:56:08 +00:00
Commands Add a 'type lookup' command. This command is meant to look up type information by name in a language-specific way. 2015-10-01 18:16:18 +00:00
Core Eliminated redundant "constructors" for ClangExpressionVariable. 2015-10-01 23:07:06 +00:00
DataFormatters Made GetScratchTypeSystemForLanguage return an error if desired. 2015-10-02 18:40:30 +00:00
Expression Add PersistentVariableDelegate to handle language-specific dematerialization. 2015-10-03 09:09:01 +00:00
Host Revert "Fixing a subtle issue on Mac OS X systems with dSYMs..." 2015-10-01 09:03:33 +00:00
Initialization TypeSystem is now a plugin interface and removed any "ClangASTContext &Class::GetClangASTContext()" functions. 2015-09-17 22:23:34 +00:00
Interpreter Move the "run" alias from process launch --shell to process launch --shell-expand-args when building on OS X 2015-09-22 22:57:12 +00:00
Plugins Add PersistentVariableDelegate to handle language-specific dematerialization. 2015-10-03 09:09:01 +00:00
Symbol Fix several issues around .ARM.exidx section handling 2015-10-02 11:58:26 +00:00
Target Made GetScratchTypeSystemForLanguage return an error if desired. 2015-10-02 18:40:30 +00:00
Utility Add support for .ARM.exidx unwind information 2015-09-30 13:50:14 +00:00
CMakeLists.txt Move LLDB initialization/shutdown to Initialization. 2015-03-19 22:00:21 +00:00
Makefile [Makefiles] Align library names with CMake build 2015-07-14 20:25:19 +00:00
lldb.cpp Move LLDB initialization/shutdown to Initialization. 2015-03-19 22:00:21 +00:00