windows-nt/Source/XPSP1/NT/enduser/stuff/hhctrl/cinfotyp.h

97 lines
4.9 KiB
C
Raw Normal View History

2020-09-26 03:20:57 -05:00
#ifndef _CINFOTYPE
#define _CINFOTYPE
#include "sitemap.h"
// system.h is included so generally that it is not explicitly included even though it is required.
class CHmData;
class CSubSets;
class CInfoType {
private:
// used by the copy consturctors
void CopyCat(const INFOTYPE_TABLES * Src_itTables);
void CopyTable( const INFOTYPE_TABLES *Src_itTables);
public:
CInfoType(void);
~CInfoType();
// Copy Constructor
// *********************
const CInfoType& operator=(const CInfoType& ITSrc); // copy constructor
const CInfoType& operator=(const CSiteMap& ITSrc);
#ifdef HHCTRL
void CopyTo( CHmData * const phmData);
#endif
#if 0 // enable for subset filtering
BOOL IsEntryInCurTypeList(SITEMAP_ENTRY* pSiteMapEntry, CSubSets *pSSs) const;
SITE_ENTRY_URL* AreTheseInfoTypesDefined(SITEMAP_ENTRY* pSiteMapEntry, CSubSets *pSSs) const;
#else
BOOL IsEntryInCurTypeList(SITEMAP_ENTRY* pSiteMapEntry) const;
SITE_ENTRY_URL* AreTheseInfoTypesDefined(SITEMAP_ENTRY* pSiteMapEntry, UINT types, int offset) const;
#endif
SITE_ENTRY_URL* NextUrlEntry(SITE_ENTRY_URL* pUrl) const { return (SITE_ENTRY_URL*) ((PBYTE) pUrl + m_cUrlEntry); }
void ReSizeIT(int Size=0);
int GetInfoType(PCSTR pszTypeName) const ;//{ return GetITIndex(pszTypeName); }
PCSTR GetInfoTypeDescription(int pos) const { return m_itTables.m_ptblInfoTypeDescriptions->GetPointer(pos); }
PCSTR GetInfoTypeName(int pos) const { return m_itTables.m_ptblInfoTypes->GetPointer(pos); }
int GetITIndex(PCSTR pszString) const { return m_itTables.m_ptblInfoTypes->IsStringInTable( pszString ); }
int HowManyInfoTypes(void) const { return m_itTables.m_ptblInfoTypes ? m_itTables.m_ptblInfoTypes->CountStrings() : 0; }
int InfoTypeSize(void) const { return m_itTables.m_cITSize * sizeof(INFOTYPE); }
BOOL IsDeleted( const int pos) const {return ( *(GetInfoTypeName(pos))==' ' )?TRUE:FALSE;}
BOOL AnyInfoTypes(const INFOTYPE *pIT) const;
BOOL IsInACategory( int type ) const;
// Exclusive Information Type methods
int GetFirstExclusive(int=-1, INFOTYPE=1) const;
int GetNextExclusive(void) const;
int GetLastExclusive(void) const;
void AddExclusiveIT(int const type) {AddIT(type, m_itTables.m_pExclusive); }
void DeleteExclusiveIT(int const type ) {DeleteIT(type, m_itTables.m_pExclusive); }
BOOL IsExclusive(int const type) const {return m_itTables.m_pExclusive?*(m_itTables.m_pExclusive+(type/32)) & (1<<(type%32)):0;}
// Hidden Information Type methods
int GetFirstHidden(int=-1, INFOTYPE=1) const;
int GetNextHidden(void) const;
int GetLastHidden(void) const;
void AddHiddenIT( int const type ) {AddIT(type, m_itTables.m_pHidden); }
void DeleteHiddenIT( int const type ) {DeleteIT(type, m_itTables.m_pHidden); }
BOOL IsHidden(int const type) const {return m_itTables.m_pHidden?*(m_itTables.m_pHidden+(type/32)) & (1<<(type%32)):0;}
// Category Methods
int GetFirstCategoryType(int pos) const ;
int GetNextITinCategory( void ) const ;
int GetLastCategoryType(int pos) const ;
void AddITtoCategory(int pos, int type);
void DeleteITfromCat(int pos, int type);
int GetCatPosition(PCSTR psz) const {return m_itTables.m_ptblCategories->IsStringInTable(psz); }
int HowManyCategories(void) const {return m_itTables.m_ptblCategories ? m_itTables.m_ptblCategories->CountStrings() : 0; }
PCSTR GetCategoryString(int pos) const { return m_itTables.m_ptblCategories->GetPointer(pos); }
PCSTR GetCategoryDescription(int pos) const {return m_itTables.m_ptblCatDescription?m_itTables.m_ptblCatDescription->GetPointer(pos):0; }
BOOL IsITinCategory( int pos, int type) const {return m_itTables.m_aCategories[pos].pInfoType?*(m_itTables.m_aCategories[pos].pInfoType+(type/32)) & (1<<(type%32)):0;}
BOOL IsCatDeleted( const int pos ) const {return ( *(GetCategoryString(pos))==' ' )?TRUE:FALSE;}
// CInfotype members
// ***********************
BOOL m_fTypeCopy; // TRUE if following tables are pointers that must not be freed
INFOTYPE_TABLES m_itTables;
INFOTYPE* m_pInfoTypes; // user-specified Information Types
INFOTYPE* m_pTypicalInfoTypes; // "typical" information types
int m_cUrlEntry; // sizeof(SITE_ENTRY_URL) + sizeof(URL) for each additional 32 Information Types
int m_cInfoTypeOffsets; // number of additional offsets to check
private:
BOOL m_fInitialized; // TRUE if IT and categorys read from disk.
};
#endif // _CINFOTYPE