// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT license.
#pragma once
//-----------------------------------------------------------------------------
// V8ScriptHolderImpl
//-----------------------------------------------------------------------------
class V8ScriptHolderImpl final: public V8ScriptHolder
{
PROHIBIT_COPY(V8ScriptHolderImpl)
public:
V8ScriptHolderImpl(const SharedPtr& spBinding, void* pvScript, const V8DocumentInfo& documentInfo, size_t codeDigest);
V8ScriptHolderImpl(const SharedPtr& spBinding, void* pvScript, const V8DocumentInfo& documentInfo, size_t codeDigest, StdString&& code);
virtual V8ScriptHolderImpl* Clone() const override;
virtual bool IsSameIsolate(const SharedPtr& spThat) const override;
virtual void* GetScript() const override;
virtual const V8DocumentInfo& GetDocumentInfo() const override;
virtual size_t GetCodeDigest() const override;
virtual const StdString& GetCode() const override;
virtual const std::vector& GetCacheBytes() const override;
virtual void SetCacheBytes(const std::vector& cacheBytes) override;
~V8ScriptHolderImpl();
private:
V8ScriptHolderImpl(const SharedPtr& spBinding, void* pvScript, const V8DocumentInfo& documentInfo, size_t codeDigest, const StdString& code, const std::vector& cacheBytes);
SharedPtr m_spBinding;
void* m_pvScript;
V8DocumentInfo m_DocumentInfo;
size_t m_CodeDigest;
StdString m_Code;
std::vector m_CacheBytes;
};