OSDN Git Service

20021009版ソース
[seraphyscrtools/SeraphyScriptTools.git] / ObjectVector.h
1 // ObjectVector.h : CObjectVector \82Ì\90é\8c¾
2
3 #ifndef __OBJECTVECTOR_H_
4 #define __OBJECTVECTOR_H_
5
6 #include "resource.h"       // \83\81\83C\83\93 \83V\83\93\83{\83\8b
7 #include <vector>
8 using namespace std;
9
10 typedef vector<VARIANT> VariantVector;
11
12 /////////////////////////////////////////////////////////////////////////////
13 // CObjectVector
14 class ATL_NO_VTABLE CObjectVector : 
15         public CComObjectRootEx<CComSingleThreadModel>,
16         public CComCoClass<CObjectVector, &CLSID_ObjectVector>,
17         public ISupportErrorInfo,
18         public IDispatchImpl<IObjectVector, &IID_IObjectVector, &LIBID_SERAPHYSCRIPTTOOLSLib>
19 {
20 public:
21         CObjectVector()
22         {
23                 m_vctVariant.reserve(100); // \8f\89\8aú\8fó\91Ô\82Å100\82Ì\83o\83b\83t\83@\82ð\8am\95Û\82·\82é
24         }
25         void FinalRelease()
26         {
27                 ATLTRACE("CObjectVector::FinalRelease\r\n");
28                 Clear();
29         }
30
31 DECLARE_REGISTRY_RESOURCEID(IDR_OBJECTVECTOR)
32
33 DECLARE_PROTECT_FINAL_CONSTRUCT()
34
35 BEGIN_COM_MAP(CObjectVector)
36         COM_INTERFACE_ENTRY(IObjectVector)
37         COM_INTERFACE_ENTRY(IDispatch)
38         COM_INTERFACE_ENTRY(ISupportErrorInfo)
39 END_COM_MAP()
40
41 // ISupportsErrorInfo
42         STDMETHOD(InterfaceSupportsErrorInfo)(REFIID riid);
43
44 // IObjectVector
45 public:
46         STDMETHOD(MakeArray)(/*[out,retval]*/VARIANT* pVal);
47         STDMETHOD(Merge)(/*[in]*/VARIANT unkVal);
48         STDMETHOD(get__NewEnum)(/*[out, retval]*/ IUnknown* *pVal);
49         STDMETHOD(get_Count)(/*[out, retval]*/ long *pVal);
50         STDMETHOD(get_Value)(/*[in,optional]*/VARIANT idx, /*[out, retval]*/ VARIANT *pVal);
51         STDMETHOD(put_Value)(/*[in,optional]*/VARIANT idx, /*[in]*/ VARIANT newVal);
52         STDMETHOD(Insert)(/*[in]*/VARIANT idx,/*[in]*/VARIANT newVal);
53         STDMETHOD(Pop)(/*[out,retval]*/VARIANT* pVal);
54         STDMETHOD(Push)(/*[in]*/VARIANT newVal);
55         STDMETHOD(Erase)(/*[in]*/VARIANT start,/*[in,optional]*/VARIANT count);
56         STDMETHOD(Clear)();
57         STDMETHOD(Duplicate)(/*[in,optional]*/VARIANT idx,/*[in,optional]*/VARIANT count,/*[out,retval]*/IUnknown** punkVal);
58         STDMETHOD(CreateVector)(/*[out,retval]*/IUnknown** punkVal);
59 protected:
60         VariantVector m_vctVariant;
61 };
62
63 #endif //__OBJECTVECTOR_H_