windows-nt/Source/XPSP1/NT/enduser/stuff/hhdump/info.h
2020-09-26 16:20:57 +08:00

103 lines
3.5 KiB
C++

// Copyright (C) Microsoft Corporation 1996-1997, All Rights reserved.
#if _MSC_VER > 1000
#pragma once
#endif
#ifndef _SYSTEM_H_
#define _SYSTEM_H_
#include "..\hhctrl\fs.h"
typedef enum {
TAG_DEFAULT_TOC, // needed if no window definitions
TAG_DEFAULT_INDEX, // needed if no window definitions
TAG_DEFAULT_HTML, // needed if no window definitions
TAG_DEFAULT_CAPTION, // needed if no window definitions
TAG_SYSTEM_FLAGS,
TAG_DEFAULT_WINDOW,
TAG_SHORT_NAME, // short name of title (ex. root filename)
TAG_HASH_BINARY_INDEX,
TAG_INFO_TYPES,
TAG_COMPILER_VERSION, // specifies the version of the compiler used
TAG_TIME, // the time the file was compiled
} SYSTEM_TAG_TYPE;
typedef struct {
WORD tag;
WORD cbTag;
} SYSTEM_TAG;
typedef struct {
LCID lcid;
BOOL fDBCS; // Don't use bitflags! Can't assume byte-order
BOOL fFTI; // full-text search enabled
BOOL fKeywordLinks;
BOOL fALinks;
FILETIME FileTime; // title uniqueness (should match .chi file)
} SYSTEM_FLAGS;
/////////////////////////////////////////////////////////////////////////////////////////////
// CTitleInformation - read in the title informaton file (#SYSTEM) settings for each title
//
class CTitleInformation
{
public:
CTitleInformation( CFileSystem* pFileSystem );
~CTitleInformation();
inline LPCSTR GetShortName() { Init(); return m_pszShortName; }
inline LPCSTR GetTitleName() { Init(); return m_pszTitleName; }
inline FILETIME GetFileTime() { Init(); return m_Settings.FileTime; }
inline LCID GetLanguage() { Init(); return m_Settings.lcid; }
inline BOOL IsKeywordLinks() { Init(); return m_Settings.fKeywordLinks; }
inline BOOL IsAssociativeLinks() { Init(); return m_Settings.fALinks; }
inline BOOL IsFullTextSearch() { Init(); return m_Settings.fFTI; }
inline BOOL IsDoubleByte() { Init(); return m_Settings.fDBCS; }
inline LPCSTR GetCompilerVersion() { Init(); return m_pszCompilerVersion; }
HRESULT Initialize();
private:
inline BOOL Init() { if( !m_bInit ) Initialize(); return m_bInit; }
BOOL m_bInit; // self-initing class
CFileSystem* m_pFileSystem; // title file system handle
SYSTEM_FLAGS m_Settings; // simple title information settings
LPCSTR m_pszShortName; // short title name
LPCSTR m_pszTitleName; // title name
LPCSTR m_pszCompilerVersion; // compiler version
};
/////////////////////////////////////////////////////////////////////////////////////////////
// CTitleInformation2 - get title informaton without going through the file system
//
class CTitleInformation2
{
public:
CTitleInformation2( LPCTSTR pszPathName );
~CTitleInformation2();
inline LPCTSTR GetShortName() { Init(); return m_pszShortName; }
inline FILETIME GetFileTime() { Init(); return m_FileTime; }
inline LCID GetLanguage() { Init(); return m_lcid; }
HRESULT Initialize();
private:
inline BOOL Init() { if( !m_bInit ) Initialize(); return m_bInit; }
BOOL m_bInit; // self-initing class
LPCTSTR m_pszPathName; // title pathname
LPCTSTR m_pszShortName; // short title name
LCID m_lcid; // language
FILETIME m_FileTime; // file time
};
HRESULT DumpTitleInformation( CFileSystem* pFileSystem );
HRESULT DumpTitleInformation2( CFileSystem* pFileSystem );
#endif // _SYSTEM_H_