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].
* Distributed under the terms of the MIT License.
*/
@@ -9,6 +9,7 @@
#include <new>
#include "ExpressionValues.h"
#include "FunctionID.h"
#include "StackFrameValues.h"
#include "Type.h"
@@ -164,7 +165,8 @@ struct VariablesViewState::InfoEntryHashDefinition {
VariablesViewState::VariablesViewState()
:
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*
VariablesViewState::GetNodeInfo(ObjectID* variable,
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].
* Distributed under the terms of the MIT License.
*/
@@ -12,6 +12,7 @@
#include <util/OpenHashTable.h>
class ExpressionValues;
class ObjectID;
class StackFrameValues;
class Type;
@@ -59,6 +60,10 @@ public:
{ return fValues; }
void SetValues(StackFrameValues* values);
ExpressionValues* GetExpressionValues() const
{ return fExpressionValues; }
void SetExpressionValues(ExpressionValues* values);
const VariablesViewNodeInfo* GetNodeInfo(ObjectID* variable,
const TypeComponentPath* path) const;
inline const VariablesViewNodeInfo* GetNodeInfo(ObjectID* variable,
@@ -82,6 +87,7 @@ private:
private:
NodeInfoTable* fNodeInfos;
StackFrameValues* fValues;
ExpressionValues* fExpressionValues;
};