// 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_