Gray C++ Libraries  0.0.2
A set of C++ libraries for MSVC, GNU on Windows, WinCE, Linux
GrayJS::cJSXFile Class Reference

#include <cJSXFile.h>

Inheritance diagram for GrayJS::cJSXFile:
GrayLib::cXObjPack GrayLib::cXObjDef GrayLib::cXObject GrayLib::cScriptableObj IXObject Gray::cThreadLockableRef Gray::CObject Gray::cHeapObject IScriptableObj Gray::cRefBase Gray::cThreadLockStub Gray::IHeapObject IUnknown Gray::cLockableBase

Public Types

enum  M_TYPE_ { M_QTY }
 
enum  P_TYPE_ { P_QTY }
 
- Public Types inherited from GrayLib::cXObjDef
enum  P_TYPE_ { P_QTY }
 
enum  M_TYPE_ { M_QTY }
 
typedef cXObject CSCRIPTABLE_SUPER_t
 
- Public Types inherited from GrayLib::cXObject
enum  P_TYPE_ { P_QTY }
 
enum  M_TYPE_ { M_QTY }
 base methods that all objects have. More...
 

Public Member Functions

 CSCRIPT_CLASS_DEF1 (GetJSObjProto, cXObjPack)
 
 cJSXFile (cString sFilePath)
 
virtual ~cJSXFile ()
 
virtual void UnloadXObject () override
 
virtual HRESULT DisposeThis () override
 utility More...
 
virtual HRESULT LoadXObjPack (IXObject *pScriptRoot) override
 Check cached open of this file. check if it should be closed? More...
 
virtual HRESULT InvokeMethodInt (cXObjPackChild *pEventSink, const ATOMCHAR_t *pszMethod, const cVariant &vArgs, cVariant &vValRet) override
 
STDMETHOD() s_Invoke (const cScriptableMethod *pMethod, const cVariant &vArgs, cVariant &vValRet) override
 
STDMETHOD() s_PropGet (const cScriptableProp *pProp, cVariant &vValRet) override
 
- Public Member Functions inherited from GrayLib::cXObjPack
virtual ~cXObjPack ()
 
virtual cStringF get_FilePath () const
 
virtual cString get_Description () const override
 
 STDMETHOD_ (XOBJTID_t, get_XObjTypeId)() const override
 
HRESULT CheckForChange ()
 modified on disk? CXOBJFILE_CHANGE_TYPE More...
 
HRESULT RegisterChildDef (cXObjDef *pChildDef)
 
bool UnregisterChildDef (cXObjDef *pChildDef)
 
- Public Member Functions inherited from GrayLib::cXObjDef
virtual cScriptableInterfaceDefPtr _stdcall get_ScriptInterfaceDef () const
 
 cXObjDef (UID_t rid, cAtomRef aSymName)
 
virtual ~cXObjDef ()
 
STDMETHOD() SetObjStateLoaded ()
 extra cleanup at the end of the load. More...
 
bool hasSymName () const noexcept
 Get the SYMNAME of the resource item. (Used for saving,scripting) may be number or name. More...
 
cAtomRef get_SymNameA () const
 
 STDMETHOD_ (cStringA, get_SymName)() const override
 
STDMETHOD() put_SymName (cAtomRef aSymName, bool bOverwrite=false) override
 
HRESULT put_SymName2 (cAtomRef aSymName)
 
 STDMETHOD_ (cString, get_Name)() const override
 
virtual void put_Description (cString sDescription)
 
virtual cString get_DescriptionFull () const
 
virtual bool isResourceLoaded () const
 
virtual HRESULT LoadXObject ()
 
virtual HRESULT ReloadXObject ()
 
virtual HRESULT SaveXObject ()
 
virtual void CopyXObject (const cXObjDef *pDef)
 
virtual int get_BaseRefCount () const override
 
STDMETHOD() s_PropPut (const cScriptableProp *pProp, const cVariant &vVal) override
 
STDMETHOD() s_PropGet (const cScriptableProp *pProp, OUT cVariant &vValRet) override
 
STDMETHOD() s_Invoke (const cScriptableMethod *pMethod, const cVariant &vArgs, OUT cVariant &vValRet) override
 
STDMETHOD() s_WriteProps (IScriptableSetter &reg) override
 
virtual size_t GetHeapStats (OUT ITERATE_t &iAllocCount) const override
 allocs for all children. does NOT include sizeof(*this) More...
 
- Public Member Functions inherited from GrayLib::cXObject
 cXObject (UID_t nUID=cUID::k_CLEAR, cXObjDef *pBaseDef=nullptr)
 
virtual ~cXObject ()
 
virtual bool isValidCheck () const noexcept override
 
 STDMETHOD_ (XOBJTID_t, get_XObjTypeId)() const
 
const ATOMCHAR_tget_XObjTypeName () const
 
bool isValidUID () const noexcept
 
UID_t get_UIDValue () const noexcept
 
UID_t get_HashCode () const noexcept
 
 STDMETHOD_ (HASHCODE_t, get_HashCodeX)() const noexcept override
 
void put_UIDValuePrivate (UID_t dwIndex)
 
 STDMETHOD_ (void, put_UIDValue)(UID_t dwIndex)
 
 STDMETHOD_ (cString, get_Name)() const override
 
STDMETHOD() put_Name (cString sName)
 
 STDMETHOD_ (cString, get_NameDeco)() const
 
 STDMETHOD_ (cStringA, get_SymName)() const override
 
STDMETHOD() put_SymName (cAtomRef aSymName, bool bOverwrite=false)
 
HRESULT put_SymName2 (cAtomRef aSymName)
 
cXObjDefget_BaseDef () const
 
virtual bool put_BaseDef (cXObjDef *pDef)
 
 STDMETHOD_ (cAtomRef, get_BaseSymNameA)() const
 shortcut for symbolic name for get_BaseDef() More...
 
virtual cRefPtr< cXObjectget_ContainerObject () const
 
virtual cVariant get_ContainerVar () const
 
STDMETHOD() put_ContainerVar (const cVariant &vVal)
 
bool isMyContainer (const cXObject *pObjParent) const
 
void InitObjState ()
 
XObjState_TYPE get_ObjState () const noexcept
 
bool put_ObjState (XObjState_TYPE eObjState)
 
bool isObjStateLoading () const noexcept
 
bool isObjStateLoading1 () const noexcept
 
bool isObjStateLoaded () const noexcept
 
bool isObjStateModified () const noexcept
 
bool isObjStateDisposed () const noexcept
 
bool isObjStateBad () const noexcept
 
STDMETHOD() SetObjStateLoaded ()
 extra cleanup at the end of the load. More...
 
void SetObjStateBad ()
 
void SetObjStateModified ()
 
void ClearObjStateModified ()
 
const cTimeIntget_TimeSaved () const noexcept
 
void put_TimeSaved (cTimeInt timeSaved)
 
void UpdateTimeSaved ()
 
virtual cVarTuplePtr FindTagA (cAtomRef aTagName) const
 extra Properties/Tags More...
 
cVarTuplePtr FindTag (const ATOMCHAR_t *pszTagName) const
 
void s_WritePropsTags (IScriptableSetter &Update)
 
STDMETHOD() s_PropPut (const cScriptableProp *pProp, const cVariant &vVal) override
 
STDMETHOD() s_PropGet (const cScriptableProp *pProp, OUT cVariant &vValRet) override
 
STDMETHOD() s_Invoke (const cScriptableMethod *pMethod, const cVariant &vArgs, OUT cVariant &vValRet) override
 
STDMETHOD() s_GetByName (const ATOMCHAR_t *pszPropName, OUT cVariant &rvValRet) override
 
STDMETHOD() s_TagPut (const ATOMCHAR_t *pszTagName, const cVariant &vValSet)
 
STDMETHOD() s_TagGet (const ATOMCHAR_t *pszTagName, OUT cVariant &vValRet)
 
STDMETHOD() s_LoadProps (IScriptableEnumerator &rProps)
 
STDMETHOD() s_EventSinkAdd (cXObjDef *pXObjDef, bool bRemove=false)
 
cStringA s_PropGetDumpStr (const cScriptableProp *pProp, XOBJ_DUMP_MASK_t uFlags=0)
 Enumerate methods and props. reflection/introspection. More...
 
HRESULT s_DumpKeys (cStreamOutput &rout, XOBJ_DUMP_MASK_t uFlags, const cScriptableProp *const *ppProps, ITERATE_t iQty)
 
HRESULT s_DumpHelp (cStreamOutput &rout, const cVariant &vArgs)
 
virtual XOBJ_WEIRD_t IsWeird () const
 
virtual XOBJ_WEIRD_t FixWeird ()
 
 IUNKNOWN_DISAMBIG_R (cThreadLockableRef)
 
STDMETHOD() QueryInterface (const IID &riid, void **ppvObject) override
 
- Public Member Functions inherited from GrayLib::cScriptableObj
virtual ~cScriptableObj ()
 
 STDMETHOD_ (cScriptableInterfaceDefPtr, get_ScriptInterfaceDef)() const
 
STDMETHOD() s_PropGet (const cScriptableProp *pProp, OUT cVariant &vValRet) override
 
STDMETHOD() s_PropPut (const cScriptableProp *pProp, const cVariant &vVal) override
 
STDMETHOD() s_Invoke (const cScriptableMethod *pMethod, const cVariant &vArgs, OUT cVariant &vValRet) override
 
const cScriptablePropFindPropStr (const ATOMCHAR_t *pszPropName) const
 
const cScriptableMethodFindMethodStr (const ATOMCHAR_t *pszPropName) const
 
HRESULT s_InvokeKey (const ATOMCHAR_t *pszMethodKey, const cVariant &vArgs, OUT cVariant &vValRet)
 
 STDMETHOD_ (cVariant, s_Exec)(const ATOMCHAR_t *pszMethodKey
 
STDMETHOD() s_GetEnum (ITERATE_t i, OUT cStringA &rsPropName, OUT cVariant &rvValRet) override
 
STDMETHOD() s_GetByName (const ATOMCHAR_t *pszPropName, OUT cVariant &rvValRet) override
 
STDMETHOD() s_Put (const ATOMCHAR_t *pszPropName, const cVariant &vValSet) override
 
void s_LoadPropsCommandLine (cAppArgs &args)
 
HRESULT s_LoadPropsBase (IScriptableEnumerator &rProps)
 
HRESULT s_LoadPropVar (const ATOMCHAR_t *pszPropName, const cVariant &vVal)
 
HRESULT s_WritePropNULL (IScriptableSetter &s, const cScriptableProp *pProp)
 
HRESULT s_WriteProp (IScriptableSetter &s, const cScriptableProp *pProp)
 
HRESULT s_WritePropsClass (IScriptableSetter &s, const cScriptableInterfaceDef *pClass)
 
HRESULT s_WritePropsArray (IScriptableSetter &s, const cScriptableProp *pProps, IScriptableObj *pDefaultSkip=nullptr)
 
STDMETHOD() s_WriteProps (IScriptableSetter &s)
 
 STDMETHOD_ (cVariant, s_Get)(const ATOMCHAR_t *pszPropName)
 
cVariant s_Get (const cScriptableProp &rProp)
 
 STDMETHOD_ (cString, s_GetStr)(const ATOMCHAR_t *pszPropName)
 
 STDMETHOD_ (float, s_GetFloat)(const ATOMCHAR_t *pszPropName)
 
STDMETHOD() GetTypeInfoCount (UINT *pctinfo)
 
- Public Member Functions inherited from Gray::cThreadLockableRef
 cThreadLockableRef (int iStaticRefCount=0) noexcept
 
virtual ~cThreadLockableRef ()
 
virtual void onThreadLockFail (TIMESYSD_t dwWaitMS)
 
- Public Member Functions inherited from Gray::cRefBase
 cRefBase (int iRefCount=0) noexcept
 
virtual ~cRefBase ()
 
int get_RefCount () const noexcept
 
HASHCODE_t get_HashCode () const noexcept
 
 STDMETHOD_ (HASHCODE_t, get_HashCodeX)() const noexcept
 
virtual void onFinalRelease ()
 
bool isValidObj () const noexcept
 
 STDMETHOD_ (ULONG, AddRef)(void) override
 
 STDMETHOD_ (ULONG, Release)(void) override
 
STDMETHOD() QueryInterface (const IID &riid, void __RPC_FAR *__RPC_FAR *ppvObject) override
 
void IncRefCount ()
 
void DecRefCount ()
 
bool isStaticConstruct () const noexcept
 
void StaticConstruct ()
 
void StaticDestruct ()
 
bool isDestructing () noexcept
 
void SetDestructing ()
 
- Public Member Functions inherited from Gray::cThreadLockStub
THREADID_t get_ThreadLockOwner () const
 
- Public Member Functions inherited from Gray::CObject
virtual ~CObject ()
 
virtual void AssertValid () const
 < memory allocation and structure definitions are valid. More...
 
virtual void Serialize (cArchive &a)
 
- Public Member Functions inherited from Gray::cHeapObject
 cHeapObject ()
 
virtual ~cHeapObject ()
 
bool IsValidInsideN (INT_PTR index) const
 
bool IsValidInsidePtr (void const *pTest) const
 
virtual size_t GetHeapStatsThis (OUT ITERATE_t &iAllocCount) const
 

Public Attributes

 CHEAPOBJECT_IMPL
 
JSScript * m_pjsScript
 loaded js script file. compiled and cached for multi usage. More...
 
- Public Attributes inherited from GrayLib::cXObjPack
cFileStatus m_Attr
 Compare to see if this has changed. More...
 
cStringF m_sFilePath
 full file path. More...
 
bool m_bDisabled
 disable all stuff from this file. for debug. More...
 
cXObjPackFactorym_pFactory
 factory for this type of file. More...
 
- Public Attributes inherited from GrayLib::cXObjDef
 CHEAPOBJECT_IMPL
 
TIMESYS_t m_timeLastUsed
 system time when last used. for caching More...
 
- Public Attributes inherited from GrayLib::cXObject
cVarMap m_TagMap
 attach extra tags here. (e.g. properties that don't apply to all instances. ASSUME NO OVERLAP with defined props.) More...
 
- Public Attributes inherited from GrayLib::cScriptableObj
const cVariantvArgs = cVariant::k_VarNULL)
 

Static Public Attributes

static cScriptableMethod sm_Methods [M_QTY+1]
 
static cScriptableProp sm_Props [P_QTY+1]
 
- Static Public Attributes inherited from GrayLib::cXObjPack
static const ATOMCHAR_t k_szSymNamePrefix [] = CATOM_STR("pkg_")
 SymName prefix e.g. "pkg_". More...
 
static const XOBJTID_t k_XObjTypeId = ((DWORD)(BYTE)( 'P' ) | ((DWORD)(BYTE)( 'a' ) << 8) | ((DWORD)(BYTE)( 'k' ) << 16) | ((DWORD)(BYTE)( 'g' ) << 24 ))
 
static cXObjTypeDef sm_XObjTypeDef = { cXObjPack::k_XObjTypeId, "cXObjPack", 0, nullptr, "cXObjPack Object", nullptr }
 
- Static Public Attributes inherited from GrayLib::cXObjDef
static cScriptableInterfaceDef sm_ScriptInterfaceDef
 
static cScriptableProp sm_Props [P_QTY+1]
 
static cScriptableMethod sm_Methods [M_QTY+1]
 
- Static Public Attributes inherited from GrayLib::cXObject
static cScriptableInterfaceDef sm_ScriptInterfaceDef
 
static cScriptableProp sm_Props [P_QTY+1]
 
static cScriptableMethod sm_Methods [M_QTY+1]
 
static ITERATE_t sm_iLoadingCount = 0
 are we loading ? LoadXObject() reentrant ? More...
 

Protected Member Functions

void ReleaseScript ()
 
- Protected Member Functions inherited from GrayLib::cXObjPack
 cXObjPack (cStringF sFilePath, cXObjPackFactory *pFactory)
 
- Protected Member Functions inherited from Gray::cLockableBase
 cLockableBase () noexcept
 
 ~cLockableBase ()
 
LONG get_LockCount () const
 
bool isLocked () const
 
void IncLockCount ()
 
LONG DecLockCount ()
 
void Lock ()
 
LONG Unlock ()
 
- Protected Member Functions inherited from Gray::cHeapObject
const void * get_HeapPtr () const noexcept override
 Get the top level (outermost, freeable) class pointer. I can delete get_HeapPtr(). More...
 

Additional Inherited Members

- Static Public Member Functions inherited from GrayLib::cXObjPack
static cStringA GRAYCALL MakeSymNameFromPath (const FILECHAR_t *pszFilePath)
 
- Static Public Member Functions inherited from GrayLib::cXObjDef
static cAtomRef GRAYCALL MakeSymName (const ATOMCHAR_t *pszTypeName, ITERATE_t iEnum)
 
- Static Public Member Functions inherited from GrayLib::cScriptableObj
static HRESULT GRAYCALL CopyAllProps (IScriptableSetter *pObjDest, IScriptableEnumerator &rProps, int iStart=0)
 
- Protected Attributes inherited from GrayLib::cXObjPack
cArrayRef< cXObjDefm_aLinkedChildren
 usually cXObjDef is cXObjPackChild. More...
 
- Protected Attributes inherited from GrayLib::cXObject
 CHEAPOBJECT_IMPL
 
cRefPtr< cXObjDefm_pBaseDef
 This XObject is based on a template of other XObject/XObjDef. overloads it's props via m_TagMap. More...
 

Detailed Description

track/wrap a JavaScript JSScript ".js" file. MIME_EXT_js as a cXObjPack 'SRC' object. Allows files to be cached with its JIT compiled code.

Member Enumeration Documentation

◆ M_TYPE_

Enumerator
M_QTY 

◆ P_TYPE_

Enumerator
P_QTY 

Constructor & Destructor Documentation

◆ cJSXFile()

GrayJS::cJSXFile::cJSXFile ( cString  sFilePath)

◆ ~cJSXFile()

GrayJS::cJSXFile::~cJSXFile ( )
virtual

Member Function Documentation

◆ CSCRIPT_CLASS_DEF1()

GrayJS::cJSXFile::CSCRIPT_CLASS_DEF1 ( GetJSObjProto  ,
cXObjPack   
)

◆ DisposeThis()

HRESULT GrayJS::cJSXFile::DisposeThis ( void  )
overridevirtual

utility

detach my children etc.

Destroy this object even though there may be references to it. indicate to anyone who looks that this is a deleted object ? Pre-destructor cleanup things can be done since virtuals don't work in destructors.

Note
since this is reference counted it is actually deleted in onFinalRelease()
This is similar to the .NET Dispose() function DEBUG_CHECK( get_ObjState() == XObjState_Disposing );

Reimplemented from GrayLib::cXObjPack.

◆ InvokeMethodInt()

HRESULT GrayJS::cJSXFile::InvokeMethodInt ( cXObjPackChild pEventSink,
const ATOMCHAR_t pszMethod,
const cVariant vArgs,
cVariant vValRet 
)
overridevirtual

Call the JavaScript method from C++.

Note
ASSUME the cScriptContext has vArgs, Base and vRet Can be accessed via This.Args etc

Reimplemented from GrayLib::cXObjPack.

◆ LoadXObjPack()

HRESULT GrayJS::cJSXFile::LoadXObjPack ( IXObject pRoot)
overridevirtual

Check cached open of this file. check if it should be closed?

  • pRoot = some alternate root for loading this file. normally just use this (cXObjPack) as the root?

Reimplemented from GrayLib::cXObjPack.

◆ ReleaseScript()

void GrayJS::cJSXFile::ReleaseScript ( )
protected

ASSUME already UnloadXObject all my child defs!

◆ s_Invoke()

HRESULT GrayJS::cJSXFile::s_Invoke ( const cScriptableMethod pMethod,
const cVariant vArgs,
cVariant vValRet 
)
override

◆ s_PropGet()

HRESULT GrayJS::cJSXFile::s_PropGet ( const cScriptableProp pProp,
cVariant vValRet 
)
override

◆ UnloadXObject()

void GrayJS::cJSXFile::UnloadXObject ( )
overridevirtual

Reimplemented from GrayLib::cXObjPack.

Member Data Documentation

◆ CHEAPOBJECT_IMPL

GrayJS::cJSXFile::CHEAPOBJECT_IMPL

◆ m_pjsScript

JSScript* GrayJS::cJSXFile::m_pjsScript

loaded js script file. compiled and cached for multi usage.

◆ sm_Methods

cScriptableMethod GrayJS::cJSXFile::sm_Methods
static
Initial value:
=
{
#define cJSXFileMethod(a,b,c)
}
#define CSCRIPT_PROP_END
Definition: cScriptableInterface.h:264

◆ sm_Props

cScriptableProp GrayJS::cJSXFile::sm_Props
static
Initial value:
=
{
#define cJSXFileProp(a,b,c)
}

The documentation for this class was generated from the following files: