/* * Copyright(c) 2000 arton * * You may distribute under the terms of either the GNU General Public * License * * $Date: 2001/04/22 13:06:40 $ */ #ifndef __GLOBALRUBYSCRIPT_H_ #define __GLOBALRUBYSCRIPT_H_ #include "resource.h" #include "RScriptCore.h" ///////////////////////////////////////////////////////////////////////////// // CGlobalRubyScript class CRubyObject; class ATL_NO_VTABLE CGlobalRubyScript : public CComCoClass, 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(); // 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, LPCOLESTR, LPCOLESTR, EXCEPINFO *, VARIANT*, DWORD); virtual void MakeScope(); virtual IDispatch* GetOuterDispatch(IDispatch*); virtual IDispatch* GetGlobalDispatch(); private: HANDLE m_hThread; void SetupArgs(LPCOLESTR); void FillArgs(IUnknown*); ID m_idMethodDefined; CRubyObject* m_pRubyObject; void ExpandArg(BSTR, std::list&); bool m_fArgInitialized; }; #endif //__GLOBALRUBYSCRIPT_H_