// query.h - header file for query functions #ifndef _QUERY_H_ #define _QUERY_H_ #include #include #include #include enum NameContextType { NAMECTX_SCHEMA = 0, NAMECTX_CONFIG = 1, NAMECTX_COUNT }; /////////////////////////////////////////////////////////////////////////////////////// // class CPersistQuery // typedef std::map< tstring, std::auto_ptr > QuerySectionMap; typedef std::map< tstring, QuerySectionMap > QueryDataMap; interface IPersistQuery; class CPersistQuery : public IPersistQuery { public: CPersistQuery(); // IUnknown STDMETHOD(QueryInterface)(REFIID riid, LPVOID* ppvObject); STDMETHOD_(ULONG, AddRef)(); STDMETHOD_(ULONG, Release)(); // IPersist STDMETHOD(GetClassID)(THIS_ CLSID* pClassID); // IPersistQuery STDMETHOD(WriteString)(THIS_ LPCTSTR pSection, LPCTSTR pValueName, LPCTSTR pValue); STDMETHOD(ReadString)(THIS_ LPCTSTR pSection, LPCTSTR pValueName, LPTSTR pBuffer, INT cchBuffer); STDMETHOD(WriteInt)(THIS_ LPCTSTR pSection, LPCTSTR pValueName, INT value); STDMETHOD(ReadInt)(THIS_ LPCTSTR pSection, LPCTSTR pValueName, LPINT pValue); STDMETHOD(WriteStruct)(THIS_ LPCTSTR pSection, LPCTSTR pValueName, LPVOID pStruct, DWORD cbStruct); STDMETHOD(ReadStruct)(THIS_ LPCTSTR pSection, LPCTSTR pValueName, LPVOID pStruct, DWORD cbStruct); STDMETHOD(Clear)(THIS); HRESULT Save(byte_string& strOut); HRESULT Load(byte_string& strIn, tstring& strScope); private: ULONG m_cRefCount; QueryDataMap m_mapQueryData; }; ///////////////////////////////////////////////////////////////////////////////////// // Query Helper Functions // HRESULT GetQuery(tstring& strScope, tstring& strQuery, byte_string& bsQueryData, HWND hWnd); HRESULT GetQueryClasses(tstring& strQuery, std::set& setClasses); HRESULT GetQueryScope(HWND hDlg, tstring& strScope); HRESULT GetNamingContext(NameContextType ctx, LPCWSTR* ppszContextDN); HRESULT FindClassObject(LPCWSTR pszClass, tstring& strObjPath); LPCWSTR GetLocalDomain(); void GetScopeDisplayString(tstring& strScope, tstring& strDisplay); void GetFullyQualifiedScopeString(tstring& strScope, tstring& strQualified); #endif // _QUERY_H_