Gray C++ Libraries  0.0.2
A set of C++ libraries for MSVC, GNU on Windows, WinCE, Linux
cJSXFile.h
Go to the documentation of this file.
1 //
4 //
5 #ifndef _INC_cJSXFile_H
6 #define _INC_cJSXFile_H
7 #ifndef NO_PRAGMA_ONCE
8 #pragma once
9 #endif
10 
11 #include "GrayJSX.h"
13 
14 namespace GrayJS
15 {
16  class cScriptableEventsMask;
17  class cJSXObject;
18  typedef cRefPtr<cJSXObject> cJSXObjectPtr;
19 
21  {
26 
27  typedef cXObjPack SUPER_t;
28  public:
30  CSCRIPT_CLASS_DEF1(GetJSObjProto, cXObjPack);
31  enum M_TYPE_
32  {
33 #define cJSXFileMethod(a,b,c) M_##a,
34 #include "cJSXFileMethods.tbl"
35 #undef cJSXFileMethod
37  };
38  static cScriptableMethod sm_Methods[M_QTY + 1];
39  enum P_TYPE_
40  {
41 #define cJSXFileProp(a,b,c) P_##a,
42 #include "cJSXFileProps.tbl"
43 #undef cJSXFileProp
45  };
46  static cScriptableProp sm_Props[P_QTY + 1];
47 
48  JSScript* m_pjsScript;
49 
50  private:
51  int ScanEventHandlers(cXObjEventSink* pEventSink, cJSContext* pjsCx, cJSObject* pjsObj);
52  HRESULT InitScript(cJSContext* pjsCx);
53  HRESULT s_Invoke_RegisterDef(const cScriptableMethod* pMethod, const cVariant& vArgs, cVariant& vValRet);
54 
55  cJSXObjectPtr GetScriptObject(cJSContext* pjsCx);
56 
57  protected:
58  void ReleaseScript();
59 
60  public:
61  cJSXFile( cString sFilePath );
62  virtual ~cJSXFile();
63 
64  virtual void UnloadXObject() override;
65  virtual HRESULT DisposeThis() override;
66  virtual HRESULT LoadXObjPack( IXObject* pScriptRoot ) override;
67 
68  // Make a call to some object in the JavaScript from C++
69  virtual HRESULT InvokeMethodInt( cXObjPackChild* pEventSink, const ATOMCHAR_t* pszMethod, const cVariant& vArgs, cVariant& vValRet ) override;
70 
71  STDMETHOD(s_Invoke)( const cScriptableMethod* pMethod, const cVariant& vArgs, cVariant& vValRet ) override;
72  STDMETHOD(s_PropGet)( const cScriptableProp* pProp, cVariant& vValRet ) override;
73  };
75 };
76 
77 #endif // _INC_JSCRIPTFILE_H
#define GRAYJS_LINK
Definition: GrayJSX.h:27
INT32 HRESULT
_WIN32 style error codes. INT32
Definition: SysTypes.h:465
Definition: cJSObject.h:56
Definition: cJSObject.h:47
Definition: cJSXFile.h:21
CHEAPOBJECT_IMPL
Definition: cJSXFile.h:29
P_TYPE_
Definition: cJSXFile.h:40
@ P_QTY
Definition: cJSXFile.h:44
JSScript * m_pjsScript
loaded js script file. compiled and cached for multi usage.
Definition: cJSXFile.h:48
M_TYPE_
Definition: cJSXFile.h:32
@ M_QTY
Definition: cJSXFile.h:36
CSCRIPT_CLASS_DEF1(GetJSObjProto, cXObjPack)
Definition: cScriptableInterface.h:97
Definition: cVariant.h:26
Definition: cXObjEventSink.h:49
Definition: cXObjPackChild.h:18
Definition: cXObjPack.h:30
Definition: IXObject.h:46
Definition: cJSObject.h:36
cRefPtr< cJSXFile > cJSXFilePtr
Definition: cJSXFile.h:74
cRefPtr< cJSXObject > cJSXObjectPtr
Definition: cJSXEngine.h:29
char ATOMCHAR_t
the char form (UNICODE or not) for an atom. (for symbolic names)
Definition: StrConst.h:15