local-variables.h 1.25 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
// Copyright 2020 the V8 project authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#ifndef V8_TOOLS_V8WINDBG_SRC_LOCAL_VARIABLES_H_
#define V8_TOOLS_V8WINDBG_SRC_LOCAL_VARIABLES_H_

#include <comutil.h>
#include <wrl/implements.h>

#include "tools/v8windbg/base/dbgext.h"

// An implementation of the property accessor for the "LocalVariables" or
// "Parameters" property on Debugger.Models.StackFrame. This allows us to modify
// the variables shown in each frame.
class V8LocalVariables
    : public WRL::RuntimeClass<
          WRL::RuntimeClassFlags<WRL::RuntimeClassType::ClassicCom>,
          IModelPropertyAccessor> {
 public:
  V8LocalVariables(WRL::ComPtr<IModelPropertyAccessor> original,
                   bool is_parameters);
  ~V8LocalVariables() override;

  IFACEMETHOD(GetValue)
  (PCWSTR key, IModelObject* context, IModelObject** value);
  IFACEMETHOD(SetValue)(PCWSTR key, IModelObject* context, IModelObject* value);

 private:
  // The built-in accessor which we are overriding.
  WRL::ComPtr<IModelPropertyAccessor> original_;
  // Whether this is for Parameters rather than LocalVariables.
  bool is_parameters_;
};

#endif  // V8_TOOLS_V8WINDBG_SRC_LOCAL_VARIABLES_H_