-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathGlobalRubyScript.h
More file actions
79 lines (66 loc) · 2.09 KB
/
GlobalRubyScript.h
File metadata and controls
79 lines (66 loc) · 2.09 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
/*
* Copyright(c) 2000 arton
*
* You may distribute under the terms of either the GNU General Public
* License
*
* $Date: 2006-11-15 12:49:36 +0900 (15 11 2006) $
*/
#ifndef __GLOBALRUBYSCRIPT_H_
#define __GLOBALRUBYSCRIPT_H_
#ifndef __IRubyEngine_INTERFACE_DEFINED__
#include "resource.h"
#include "RScriptCore.h"
/////////////////////////////////////////////////////////////////////////////
// CGlobalRubyScript
class CRubyObject;
class ATL_NO_VTABLE CGlobalRubyScript :
public CComCoClass<CGlobalRubyScript, &CLSID_GlobalRubyScript>,
public IGlobalRubyScript,
public CRScriptCore
{
public:
CGlobalRubyScript() :
m_pRubyObject(NULL), m_fArgInitialized(false)
{
ATLTRACE(_("GlobalRuby \n"));
}
DECLARE_REGISTRY_RESOURCEID(IDR_GLOBALRUBYSCRIPT)
DECLARE_PROTECT_FINAL_CONSTRUCT()
BEGIN_COM_MAP(CGlobalRubyScript)
COM_INTERFACE_ENTRY(IGlobalRubyScript)
COM_INTERFACE_ENTRY_CHAIN(CRScriptCore)
END_COM_MAP()
HRESULT FinalConstruct();
void FinalRelease();
// IActiveScript
HRESULT STDMETHODCALLTYPE SetScriptState(
/* [in] */ SCRIPTSTATE ss);
// IGlobalRubyScript
public:
HRESULT STDMETHODCALLTYPE InterruptScriptThread(
/* [in] */ SCRIPTTHREADID stidThread,
/* [in] */ const EXCEPINFO __RPC_FAR *pexcepinfo,
/* [in] */ DWORD dwFlags);
virtual void AddNamedItem(LPCOLESTR);
HRESULT STDMETHODCALLTYPE ClearModuleObject( void);
protected:
HRESULT ParseText(int, LPCSTR, LPCOLESTR, EXCEPINFO *, VARIANT*, DWORD);
HRESULT EvalExpression(int, LPCSTR, EXCEPINFO *, VARIANT*);
void RaiseError(int, LPCSTR);
void SetExceptionInfo(EXCEPINFO* pExcepInfo);
virtual void MakeScope();
virtual IDispatch* GetOuterDispatch(IDispatch*);
virtual IDispatch* GetGlobalDispatch();
virtual void DefineConstant(LPOLESTR, VARIANT*);
private:
HANDLE m_hThread;
void SetupArgs(LPCOLESTR);
void FillArgs(IUnknown*);
ID m_idMethodDefined;
CRubyObject* m_pRubyObject;
void ExpandArg(BSTR, std::list<std::string>&);
bool m_fArgInitialized;
};
#endif
#endif //__GLOBALRUBYSCRIPT_H_