Source code of Windows XP (NT5)
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
#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
|