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(),