Back

// PSLTable.h : Declaration of the CPSLTable

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

class ATL_NO_VTABLE CPSLTable :
   public CComObjectRootEx<CComMultiThreadModel>,
   public CComCoClass<CPSLTable, &CLSID_PSLTable>,
   public IDispatchImpl<IPSLTable, &IID_IPSLTable, &LIBID_ProSysLib, PSL_HiVersion, PSL_LoVersion>,
   public CPSLException<&CLSID_PSLAccount, &IID_IPSLAccount>
{
   typedef map<long, _bstr_t> CColumnNames;
   typedef map<long, _variant_t> CColumnValues;

public:

   CPSLTable();

   bool Initialize(IWbemClassObject * pClassObject, long & lErrorCode, vector<tstring> * pColFilter, bool bSpecial);
   bool AddRow(IWbemClassObject * pClassObject, long & lErrorCode);

BEGIN_COM_MAP(CPSLTable)
   COM_INTERFACE_ENTRY(IPSLTable)
   COM_INTERFACE_ENTRY(IDispatch)
   COM_INTERFACE_ENTRY(ISupportErrorInfo)
END_COM_MAP()

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

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

   STDMETHOD(get_nCols)(long * pValue);
   STDMETHOD(get_nRows)(long * pValue);
   STDMETHOD(GetValue)(long RowIdx, long ColIdx, VARIANT * pValue);
   STDMETHOD(GetColName)(long ColIdx, BSTR * pValue);

private:

   long m_nCols;
   long m_nRows;

   CColumnNames m_ColumnNames;
   CColumnValues m_ColumnValues;
};

Top