// Copyright © 2018 The CefSharp Authors. All rights reserved. // // Use of this source code is governed by a BSD-style license that can be found in the LICENSE file. #pragma once #include "Stdafx.h" #include "include\cef_values.h" #include "CefWrapper.h" namespace CefSharp { namespace Internals { [System::Diagnostics::DebuggerDisplay("{DebuggerDisplay,nq}")] private ref class CefValueWrapper : public IValue, public CefWrapper { private: MCefRefPtr _cefValue; property String^ DebuggerDisplay { String^ get() { if (IsDisposed) { return "CefValueWrapper"; } if (Type == Enums::ValueType::String) { return GetString(); } if (Type == Enums::ValueType::Bool) { return GetBool().ToString(); } if (Type == Enums::ValueType::Int) { return GetInt().ToString(); } if (Type == Enums::ValueType::Double) { return GetDouble().ToString(); } return "CefValueWrapper: " + Type.ToString(); } } internal: CefValueWrapper(CefRefPtr &cefValue) : _cefValue(cefValue) { } !CefValueWrapper() { _cefValue = nullptr; } ~CefValueWrapper() { this->!CefValueWrapper(); _disposed = true; } public: virtual bool GetBool(); virtual double GetDouble(); virtual int GetInt(); virtual String^ GetString(); virtual IDictionary^ GetDictionary(); virtual IList^ GetList(); virtual Object^ GetObject(); virtual property Enums::ValueType Type { Enums::ValueType get() { ThrowIfDisposed(); return (Enums::ValueType)_cefValue->GetType(); } } }; } }