|
|
//------------------------------------------------------------------------------
//
// File: impfile.h
// Copyright (C) 1995-1997 Microsoft Corporation
// All rights reserved.
//
// Declaration of CLocImpFile, which provides the ILocFile interface for
// the parser
//
// MAJOR IMPLEMENTATION FILE.
//
// Owner:
//
//------------------------------------------------------------------------------
#ifndef IMPFILE_H
#define IMPFILE_H
const FileType ftMNCFileType = ftUnknown + 1;
class CLocImpFile : public ILocFile, public CLObject { public: CLocImpFile(ILocParser *);
protected: //
// Standard IUnknown methods
//
STDMETHOD_(ULONG, AddRef)(); STDMETHOD_(ULONG, Release)(); STDMETHOD(QueryInterface)(REFIID iid, LPVOID* ppvObj);
//
// Standard Debugging interfaces
//
STDMETHOD_(void, AssertValidInterface)(THIS) CONST_METHOD;
//
// ILocFile methods.
//
STDMETHOD_(BOOL, OpenFile)(const CFileSpec REFERENCE, CReporter REFERENCE); STDMETHOD_(FileType, GetFileType)() const; STDMETHOD_(void, GetFileTypeDescription)(CLString REFERENCE) const; STDMETHOD_(BOOL, GetAssociatedFiles)(CStringList REFERENCE) const;
STDMETHOD_(BOOL, EnumerateFile)(CLocItemHandler REFERENCE, const CLocLangId &, const DBID REFERENCE); STDMETHOD_(BOOL, GenerateFile)(const CPascalString REFERENCE, CLocItemHandler REFERENCE, const CLocLangId REFERENCE, const CLocLangId REFERENCE, const DBID REFERENCE);
//
// CLObect implementation
//
#ifdef LTASSERT_ACTIVE
void AssertValid() const; #endif
private: IStream * m_pstmTargetString; IStorage * m_pstgTargetStringTable; IStorage * m_pstgTargetParent; DWORD m_dwCountOfStringTables; IStream * m_pstmSourceString; IStorage * m_pstgSourceStringTable; IStorage * m_pstgSourceParent; DWORD m_dwCountOfStrings; CLSID m_clsidSnapIn; DWORD m_dwID,m_dwRefCount;
bool m_bXMLBased; CComQIPtr<IXMLDOMNode> m_spStringTablesNode; CComQIPtr<IXMLDOMNode> m_spTargetStringTablesNode;
private: BOOL GenerateStrings(CLocItemHandler & ihItemHandler,CLocItemSet &isItemSet); BOOL OpenStream(BOOL fGenerating); BOOL AddItemToSet(CLocItemSet & isItemSet,const DBID &dbidNodeId,DWORD dwID,LPCSTR szTemp); BOOL ProcessStrings(CLocItemHandler &ihItemHandler,const DBID &dbidFileId,BOOL fGenerating); BOOL ProcessXMLStrings(CLocItemHandler &ihItemHandler,const DBID &dbidFileId,BOOL fGenerating); BOOL EnumerateStrings(CLocItemHandler &ihItemHandler,const DBID &dbidFileId, BOOL fGenerating ); BOOL CreateChildNode(CLocItemHandler & ihItemHandler,const DBID &dbidFileId, DBID & pNewParentId,const char *szNodeRes,const char *szNodeString); BOOL CreateParentNode(CLocItemHandler & ihItemHandler,const DBID &dbidFileId, DBID & pNewParentId,const char *szNodeRes,const char *szNodeString); //
// Private methods to prevent callers access.
//
~CLocImpFile(); CLocImpFile(); const CLocImpFile &operator=(const CLocImpFile &);
//
// Private data for C.O.M. implementation
//
ILocParser *m_pParentClass; ULONG m_ulRefCount;
//
// Framework data.
//
enum ImpFileError { ImpNoError, ImpSourceError, ImpTargetError, ImpEitherError, ImpNeitherError // For errors which aren't really in files.
// TODO: Add more error types here if you need them.
};
CPascalString m_pstrFileName; // Filename of source file.
DBID m_idFile; CPascalString m_pstrTargetFile; // Filename of target file, set
// only when generating.
CLFile *m_pOpenSourceFile; // File object for source file.
CLFile *m_pOpenTargetFile; // File object for target file, set
// only when generating.
CReporter *m_pReporter; // Reporter object used to display messages.
// THIS POINTER IS VALID ONLY DURING CALLS TO
// OpenFile(), EnumerateFile(), GenerateFile(),
// and anything called from them. If it is
// not valid, it is guaranteed to be NULL.
FileType m_FileType; // Type (ft* constant above) for this file.
CodePage m_cpSource; // ANSI code page for source file.
CodePage m_cpTarget; // ANSI code page for target file, set
// only when generating.
//
// Parser-specific data.
//
//
// Private implementation functions.
//
BOOL Verify(); //
// Handy utility functions. TODO: Except for ReportException(), they should
// be removed if not used. Note ReportMessage() is used by other utility
// functions.
//
void ReportException(CException *pException, // DO NOT EVER REMOVE!
ImpFileError WhichFile = ImpSourceError) const; void ReportMessage(MessageSeverity sev, UINT nMsgId, // REMOVE CAREFULLY!
ImpFileError WhichFile = ImpSourceError) const; };
#endif // IMPFILE_H
|