First step of refactoring variable handling in the
expression parser. There shouldn't be four separate
classes encapsulating a variable.
ClangExpressionVariable is now meant to be the
container for all variable information. It has
several optional components that hold data for
different subsystems.
ClangPersistentVariable has been removed; we now
use ClangExpressionVariable instead.
git-svn-id: https://llvm.org/svn/llvm-project/llvdb/trunk@111600 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/source/Expression/ClangExpressionDeclMap.cpp b/source/Expression/ClangExpressionDeclMap.cpp
index 845d1c0..8cacc1f 100644
--- a/source/Expression/ClangExpressionDeclMap.cpp
+++ b/source/Expression/ClangExpressionDeclMap.cpp
@@ -101,14 +101,7 @@
parser_type.GetOpaqueQualType()),
context);
- ConstString const_name(name);
-
- ClangPersistentVariable *pvar = m_persistent_vars->CreateVariable(const_name, user_type);
-
- if (!pvar)
- return false;
-
- return true;
+ return m_persistent_vars->CreatePersistentVariable (name, user_type);
}
bool
@@ -294,7 +287,7 @@
bool
ClangExpressionDeclMap::Dematerialize (ExecutionContext *exe_ctx,
- ClangPersistentVariable *&result,
+ ClangExpressionVariable *&result,
Error &err)
{
return DoMaterialize(true, exe_ctx, &result, err);
@@ -368,7 +361,7 @@
bool
ClangExpressionDeclMap::DoMaterialize (bool dematerialize,
ExecutionContext *exe_ctx,
- ClangPersistentVariable **result,
+ ClangExpressionVariable **result,
Error &err)
{
Log *log = lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_EXPRESSIONS);
@@ -451,7 +444,7 @@
if (log)
log->PutCString("Returning result PVar");
- *result = m_persistent_vars->GetVariable(ConstString(m_result_name.c_str()));
+ *result = m_persistent_vars->GetVariable(m_result_name.c_str());
if (!*result)
{
@@ -506,7 +499,7 @@
if (log)
log->Printf("Found persistent variable %s", name);
- ClangPersistentVariable *pvar(m_persistent_vars->GetVariable(ConstString(name)));
+ ClangExpressionVariable *pvar(m_persistent_vars->GetVariable(name));
if (!pvar)
{
@@ -515,7 +508,11 @@
}
size_t pvar_size = pvar->Size();
- uint8_t *pvar_data = pvar->Data();
+
+ if (!pvar->m_data_vars.get())
+ return false;
+
+ uint8_t *pvar_data = pvar->m_data_vars->m_data->GetBytes();
Error error;
if (dematerialize)
@@ -779,7 +776,7 @@
if (var)
AddOneVariable(context, var);
- ClangPersistentVariable *pvar(m_persistent_vars->GetVariable(ConstString(name)));
+ ClangExpressionVariable *pvar(m_persistent_vars->GetVariable(name));
if (pvar)
AddOneVariable(context, pvar);
@@ -927,9 +924,9 @@
void
ClangExpressionDeclMap::AddOneVariable(NameSearchContext &context,
- ClangPersistentVariable *pvar)
+ ClangExpressionVariable *pvar)
{
- TypeFromUser user_type = pvar->Type();
+ TypeFromUser user_type = pvar->m_user_type;
TypeFromParser parser_type(ClangASTContext::CopyType(context.GetASTContext(),
user_type.GetASTContext(),