Debugger: Add ExpressionValues to VariablesViewState.

- VariablesViewState is now able to optionally store previous values
  for expression nodes.
This commit is contained in:
Rene Gollent
2014-11-08 10:48:59 -05:00
parent 1904b0c99a
commit 6a7eaa2a75
2 changed files with 27 additions and 3 deletions
@@ -1,5 +1,5 @@
/* /*
* Copyright 2013, Rene Gollent, [email protected]. * Copyright 2013-2014, Rene Gollent, [email protected].
* Copyright 2009, Ingo Weinhold, [email protected]. * Copyright 2009, Ingo Weinhold, [email protected].
* Distributed under the terms of the MIT License. * Distributed under the terms of the MIT License.
*/ */
@@ -9,6 +9,7 @@
#include <new> #include <new>
#include "ExpressionValues.h"
#include "FunctionID.h" #include "FunctionID.h"
#include "StackFrameValues.h" #include "StackFrameValues.h"
#include "Type.h" #include "Type.h"
@@ -164,7 +165,8 @@ struct VariablesViewState::InfoEntryHashDefinition {
VariablesViewState::VariablesViewState() VariablesViewState::VariablesViewState()
: :
fNodeInfos(NULL), fNodeInfos(NULL),
fValues(NULL) fValues(NULL),
fExpressionValues(NULL)
{ {
} }
@@ -201,6 +203,22 @@ VariablesViewState::SetValues(StackFrameValues* values)
} }
void
VariablesViewState::SetExpressionValues(ExpressionValues* values)
{
if (fExpressionValues == values)
return;
if (fExpressionValues != NULL)
fExpressionValues->ReleaseReference();
fExpressionValues = values;
if (fExpressionValues != NULL)
fExpressionValues->AcquireReference();
}
const VariablesViewNodeInfo* const VariablesViewNodeInfo*
VariablesViewState::GetNodeInfo(ObjectID* variable, VariablesViewState::GetNodeInfo(ObjectID* variable,
const TypeComponentPath* path) const const TypeComponentPath* path) const
@@ -1,5 +1,5 @@
/* /*
* Copyright 2013, Rene Gollent, [email protected]. * Copyright 2013-2014, Rene Gollent, [email protected].
* Copyright 2009, Ingo Weinhold, [email protected]. * Copyright 2009, Ingo Weinhold, [email protected].
* Distributed under the terms of the MIT License. * Distributed under the terms of the MIT License.
*/ */
@@ -12,6 +12,7 @@
#include <util/OpenHashTable.h> #include <util/OpenHashTable.h>
class ExpressionValues;
class ObjectID; class ObjectID;
class StackFrameValues; class StackFrameValues;
class Type; class Type;
@@ -59,6 +60,10 @@ public:
{ return fValues; } { return fValues; }
void SetValues(StackFrameValues* values); void SetValues(StackFrameValues* values);
ExpressionValues* GetExpressionValues() const
{ return fExpressionValues; }
void SetExpressionValues(ExpressionValues* values);
const VariablesViewNodeInfo* GetNodeInfo(ObjectID* variable, const VariablesViewNodeInfo* GetNodeInfo(ObjectID* variable,
const TypeComponentPath* path) const; const TypeComponentPath* path) const;
inline const VariablesViewNodeInfo* GetNodeInfo(ObjectID* variable, inline const VariablesViewNodeInfo* GetNodeInfo(ObjectID* variable,
@@ -82,6 +87,7 @@ private:
private: private:
NodeInfoTable* fNodeInfos; NodeInfoTable* fNodeInfos;
StackFrameValues* fValues; StackFrameValues* fValues;
ExpressionValues* fExpressionValues;
}; };