// Copyright 2014 PDFium Authors. All rights reserved. | |
// Use of this source code is governed by a BSD-style license that can be | |
// found in the LICENSE file. | |
// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com | |
#ifndef FXJSE_CLASS_H_ | |
#define FXJSE_CLASS_H_ | |
class CFXJSE_Context; | |
class CFXJSE_Value; | |
class CFXJSE_Class { | |
protected: | |
CFXJSE_Class(CFXJSE_Context* lpContext) | |
: m_lpClassDefinition(nullptr), m_pContext(lpContext) {} | |
public: | |
inline CFXJSE_Context* GetContext() { return m_pContext; } | |
inline v8::Global<v8::FunctionTemplate>& GetTemplate() { return m_hTemplate; } | |
public: | |
static CFXJSE_Class* Create(CFXJSE_Context* pContext, | |
const FXJSE_CLASS* lpClassDefintion, | |
FX_BOOL bIsJSGlobal = FALSE); | |
static CFXJSE_Class* GetClassFromContext(CFXJSE_Context* pContext, | |
const CFX_ByteStringC& szName); | |
static void SetUpDynPropHandler(CFXJSE_Context* pContext, | |
CFXJSE_Value* pValue, | |
const FXJSE_CLASS* lpClassDefinition); | |
static void SetUpNamedPropHandler( | |
v8::Isolate* pIsolate, | |
v8::Local<v8::ObjectTemplate>& hObjectTemplate, | |
const FXJSE_CLASS* lpClassDefinition); | |
protected: | |
CFX_ByteString m_szClassName; | |
const FXJSE_CLASS* m_lpClassDefinition; | |
CFXJSE_Context* m_pContext; | |
v8::Global<v8::FunctionTemplate> m_hTemplate; | |
friend class CFXJSE_Context; | |
friend class CFXJSE_Value; | |
}; | |
struct CFXJSE_ArgumentsImpl { | |
const v8::FunctionCallbackInfo<v8::Value>* m_pInfo; | |
CFXJSE_Value* m_pRetValue; | |
}; | |
#endif |