• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // Copyright 2020 the V8 project authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4 
5 #ifndef V8_TOOLS_V8WINDBG_SRC_LOCAL_VARIABLES_H_
6 #define V8_TOOLS_V8WINDBG_SRC_LOCAL_VARIABLES_H_
7 
8 #include <comutil.h>
9 #include <wrl/implements.h>
10 
11 #include "tools/v8windbg/base/dbgext.h"
12 
13 // An implementation of the property accessor for the "LocalVariables" or
14 // "Parameters" property on Debugger.Models.StackFrame. This allows us to modify
15 // the variables shown in each frame.
16 class V8LocalVariables
17     : public WRL::RuntimeClass<
18           WRL::RuntimeClassFlags<WRL::RuntimeClassType::ClassicCom>,
19           IModelPropertyAccessor> {
20  public:
21   V8LocalVariables(WRL::ComPtr<IModelPropertyAccessor> original,
22                    bool is_parameters);
23   ~V8LocalVariables() override;
24 
25   IFACEMETHOD(GetValue)
26   (PCWSTR key, IModelObject* context, IModelObject** value);
27   IFACEMETHOD(SetValue)(PCWSTR key, IModelObject* context, IModelObject* value);
28 
29  private:
30   // The built-in accessor which we are overriding.
31   WRL::ComPtr<IModelPropertyAccessor> original_;
32   // Whether this is for Parameters rather than LocalVariables.
33   bool is_parameters_;
34 };
35 
36 #endif  // V8_TOOLS_V8WINDBG_SRC_LOCAL_VARIABLES_H_
37