Back

// PSLEnvironmentVars.h : Declaration of the CPSLEnvironmentVars

#pragma once
#include "resource.h"       // main symbols
#include "GUIDs.h"
#include "PSLExceptions.h"
#include "ProSysLib_i.h"

DECLARE_PSL_COLLECTION(EnvironmentVars, EnvironmentVar);

class ATL_NO_VTABLE CPSLEnvironmentVars:
   public CComObjectRootEx<CComMultiThreadModel>,
   public CComCoClass<CPSLEnvironmentVars, &CLSID_PSLEnvironmentVars>,
   public CEnvironmentVarsCollection,
   public CPSLException<&CLSID_PSLEnvironmentVars, &IID_IPSLEnvironmentVars>
{
public:

   CPSLEnvironmentVars();

BEGIN_COM_MAP(CPSLEnvironmentVars)
   COM_INTERFACE_ENTRY(IPSLEnvironmentVars)
   COM_INTERFACE_ENTRY(IDispatch)
   COM_INTERFACE_ENTRY(ISupportErrorInfo)
END_COM_MAP()

   DECLARE_PROTECT_FINAL_CONSTRUCT()
   HRESULT FinalConstruct();
   void FinalRelease();

////////////////////////////
// Interface Implementation:
////////////////////////////

   STDMETHOD(Update)();
   STDMETHOD(Find)(BSTR Name, IPSLEnvironmentVar ** ppValue);
   STDMETHOD(Add)(BSTR Name, BSTR Value, IPSLEnvironmentVar ** ppValue);
   STDMETHOD(Remove)(BSTR Name, VARIANT_BOOL * pValue);

protected:

   virtual HRESULT OnIndexOutOfRange();

private:

   static bool ParseVariable(LPCTSTR sVariable, tstring & sName, tstring & sValue);

   void InternalUpdate();
};

Top