2 * Copyright 2009, Ingo Weinhold, ingo_weinhold@gmx.de.
3 * Distributed under the terms of the MIT License.
5 #ifndef STACK_FRAME_VALUES_H
6 #define STACK_FRAME_VALUES_H
9 #include <Referenceable.h>
10 #include <util/OpenHashTable.h>
15 class TypeComponentPath
;
18 class StackFrameValues
: public BReferenceable
{
21 StackFrameValues(const StackFrameValues
& other
);
22 // throws std::bad_alloc
23 virtual ~StackFrameValues();
27 bool GetValue(ObjectID
* variable
,
28 const TypeComponentPath
* path
,
29 BVariant
& _value
) const;
30 inline bool GetValue(ObjectID
* variable
,
31 const TypeComponentPath
& path
,
32 BVariant
& _value
) const;
33 bool HasValue(ObjectID
* variable
,
34 const TypeComponentPath
* path
) const;
35 inline bool HasValue(ObjectID
* variable
,
36 const TypeComponentPath
& path
) const;
37 status_t
SetValue(ObjectID
* variable
,
38 TypeComponentPath
* path
,
39 const BVariant
& value
);
44 struct ValueEntryHashDefinition
;
46 typedef BOpenHashTable
<ValueEntryHashDefinition
> ValueTable
;
49 StackFrameValues
& operator=(const StackFrameValues
& other
);
59 StackFrameValues::GetValue(ObjectID
* variable
, const TypeComponentPath
& path
,
60 BVariant
& _value
) const
62 return GetValue(variable
, &path
, _value
);
67 StackFrameValues::HasValue(ObjectID
* variable
, const TypeComponentPath
& path
)
70 return HasValue(variable
, &path
);
74 #endif // STACK_FRAME_VALUES_H