GME  13
MgaMetaRegNode.h
Go to the documentation of this file.
00001 
00002 #ifndef MGA_MGAMETAREGNODE_H
00003 #define MGA_MGAMETAREGNODE_H
00004 
00005 // --------------------------- CMgaMetaRegNodes
00006 
00007 class ATL_NO_VTABLE CMgaMetaRegNodes
00008 {
00009 public:
00010         static HRESULT get_RegistryNode(IUnknown *me, BSTR path, IMgaMetaRegNode **p);
00011         static HRESULT get_RegistryValue(IUnknown *me, BSTR path, BSTR *p);
00012         static HRESULT put_RegistryValue(IUnknown *me, BSTR path, BSTR p);
00013 };
00014 
00015 #define DECLARE_MGAMETAREGNODES() \
00016 \
00017 public: \
00018         STDMETHOD(get_RegistryNodes)(IMgaMetaRegNodes **p) \
00019         { return ComGetCollectionValue<IMgaMetaRegNode>(GetUnknown(), ATTRID_REGNODES_COLL, p); } \
00020 \
00021         STDMETHOD(get_RegistryNode)(BSTR path, IMgaMetaRegNode **p) \
00022         { return CMgaMetaRegNodes::get_RegistryNode(GetUnknown(), path, p); } \
00023 \
00024         STDMETHOD(GetRegistryNodeDisp)(BSTR path, IMgaMetaRegNode **p) \
00025         { return get_RegistryNode( path, p); } \
00026 \
00027         STDMETHOD(get_RegistryValue)(BSTR path, BSTR *p) \
00028         { return CMgaMetaRegNodes::get_RegistryValue(GetUnknown(), path, p); } \
00029 \
00030         STDMETHOD(GetRegistryValueDisp)(BSTR path, BSTR *p) \
00031         { return get_RegistryValue( path, p); } \
00032 \
00033         STDMETHOD(put_RegistryValue)(BSTR path, BSTR p) \
00034         { return CMgaMetaRegNodes::put_RegistryValue(GetUnknown(), path, p); } \
00035 \
00036         STDMETHOD(SetRegistryValueDisp)(BSTR path, BSTR p) \
00037         { return put_RegistryValue( path, p); }
00038 
00039 
00040 // --------------------------- CMgaMetaRegNode
00041 
00042 class ATL_NO_VTABLE CMgaMetaRegNode : 
00043         public CComCoClass<CMgaMetaRegNode, &__uuidof(MgaMetaRegNode)>,
00044         public CComObjectRootEx<CComSingleThreadModel>,
00045         public IDispatchImpl<IMgaMetaRegNode, &__uuidof(IMgaMetaRegNode), &__uuidof(__MGAMetaLib)>,
00046         public CMgaMetaRegNodes
00047 {
00048 public:
00049         IUnknown *GetUnknown() const { return (IMgaMetaRegNode*)this; }
00050 
00051 DECLARE_REGISTRY_RESOURCEID(IDR_MGAMETAREGNODE)
00052 DECLARE_ONLY_AGGREGATABLE(CMgaMetaRegNode)
00053 
00054 BEGIN_COM_MAP(CMgaMetaRegNode)
00055         COM_INTERFACE_ENTRY(IMgaMetaRegNode)
00056         COM_INTERFACE_ENTRY(IDispatch)
00057 END_COM_MAP()
00058 
00059 DECLARE_MGAMETAREGNODES()
00060 
00061 public:
00062         STDMETHOD(get_Name)(BSTR *p)
00063         { return ComGetAttrValue(GetUnknown(), ATTRID_NAME, p); }
00064 
00065         STDMETHOD(get_Value)(BSTR *p)
00066         { return ComGetAttrValue(GetUnknown(), ATTRID_VALUE, p); }
00067 
00068         STDMETHOD(put_Value)(BSTR p)
00069         { return ComPutAttrValue(GetUnknown(), ATTRID_VALUE, p); }
00070 
00071         STDMETHOD(Delete)();
00072 
00073 // ------- Traverse
00074 
00075 public:
00076         static void Traverse(CMgaMetaProject *metaproject, CCoreObjectPtr &me);
00077 };
00078 
00079 #endif//MGA_MGAMETAREGNODE_H